ОбзорMod Rewrite 500 Сервер проблема Ошибка
Я пытаюсь переписать:
http://www.foo.com/bar
к безопасной версииhttps://www.foo.com/bar
, затемhttps://www.foo.com/bar
кhttps://www.foo.com/index.php?location=bar
Мои index.php
страница просто выводит $_GET
переменных.
Код
.htaccess
:
RewriteEngine On
RewriteBase/
RewriteRule ^https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]
RewriteRule ^([^/]*)$ /?location=$1 [L]
index.php
:
<?php print_r($_GET); exit; ?>
Выпуск
- Если я посещаю
www.foo.com/bar
, я вижу ошибку сервера . - Если я прокомментирую правило для обработки переменной «location»
$_GET
и зайдите вfoo.com
, он не перенаправляет на защищенную версию сайта.
Обновление
.htaccess
:
RewriteEngine on
# if https is off (it is on)
#RewriteCond %{HTTPS} off
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?$ ?location=$1 [L,QSA]
Посещение следующие результаты в ошибке петли переадресации:
- www.foo.com/bar
- www.foo.com/index.php?location=bar
- www.foo.com/?location=bar
- www.foo.com?location=bar
Однако, если я закомментируйте эту строку:
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
страница загружается, как и ожидалось:
Array ([location] => bar)
Это заставляет меня верить ТНА Проблема заключается в перенаправлении HTTPS, как я могу это решить?
* "Если я посещаю foo.com/bar"* - вы можете быть более конкретным? как в случае, если вы используете 'http: // foo.com/bar' или' http: // www.foo.com/bar', это 2 разных животных. Выполнение 'foo.com/bar' в веб-браузере будет по умолчанию' http: // foo.com/bar' вместо 'http: // www.foo.com/ bar' –
@ Fred-ii- I ' я изменил свой вопрос. – Ben