Подтвердить что ты не робот

Короткая ссылка на http из https (и наоборот) с использованием относительных ссылок

Когда я нахожусь в защищенной части веб-сайта, который я разрабатываю (вводя конкретную страницу или папку с помощью https), относительные ссылки на обычные страницы автоматически преобразуются в https.

Есть ли способ сообщить <a> чтобы всегда использовать протокол http вместо протокола https (или наоборот)?

Я знаю, что это просто, используя полную ссылку (http://www.mysite.com/index.html или https://www.mysite.com/index.html), но я бы хотел, чтобы он работал с относительными ссылками (index.html,../index.html и т.д.).

4b9b3361

Ответ 1

Мы используем Apache mod_rewrite, чтобы контролировать, обслуживается ли страница через http или https. Вот пример фрагмента из корневого каталога сайта .htaccess:

# Redirect most reqests for https to http
RewriteRule ^https://www.example.com(.*) http://www.example.com$1 [R=301,NC]

# Allow some URIs to be https if requested
RewriteCond   %{SERVER_PORT}  ^443$
RewriteCond   %{REQUEST_URI}  !^/images/(.*)$
RewriteCond   %{REQUEST_URI}  !^/scripts/(.*)$
RewriteCond   %{REQUEST_URI}  !^/styles/(.*)$
RewriteCond   %{REQUEST_URI}  !^/store(.*)$
RewriteCond   %{REQUEST_URI}  !^/login.htm$
RewriteRule ^(.*) http://www.example.com/$1 [L,R]

# Force some URIs to be https only
RewriteCond   %{SERVER_PORT}  ^80$
RewriteRule ^store(.*) https://www.example.com/store$1 [L,R]

RewriteCond   %{SERVER_PORT}  ^80$
RewriteRule ^FormSanityKey.htm https://www.example.com/login$1 [L,R]

Прочитайте все о нем по адресу:

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Ответ 2

Вы можете сделать все ваши внутренние ссылки независимыми от протокола, используя следующий синтаксис:

<a href="//some/file/on/your/domain.php">link text</a>

вместо

<a href="some/file/on/your/domain.php">link text</a>

// сделает ссылку уважением к любому протоколу, на который была загружена страница.

Ответ 3

Не уверен, что это именно то, что вы искали, но если вы используете Apache, там есть трюк, который вы можете использовать для этого: http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#relative

В основном вы добавляете следующее в конфигурационный файл Apache:

RewriteEngine on
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]

затем добавьте :SSL к любой ссылке (на веб-странице), для которой вы хотите принудительно установить HTTPS, и :NOSSL на любую ссылку, для которой вы хотите принудительно настроить HTTP-протокол.

Ответ 4

Похоже, вы хотите использовать элемент BASE.

Невозможно "указать" Anchor использовать определенный протокол или нет, по крайней мере, без использования элемента BASE в HEAD этой страницы.

Есть ли причина, по которой вы хотите использовать относительные ссылки по абсолютным ссылкам? В этой статье говорится о ловушке использования относительных связей с HTTPS - потенциальной возможностью индексации вашего сайта и т.д.

Ответ 5

Нет способа сделать это с относительными гиперссылками, так как вы используете другой протокол, это ничем не отличается от привязки к местоположению ftp.