#apache #.htaccess #mod-rewrite
#apache #.htaccess #mod-перезаписать
Вопрос:
У меня есть файл .htaccess в каталоге, который должен перенаправлять все запросы на query.php , добавляя запрошенный файл в качестве GET var:
RewriteEngine on
RewriteRule ^(.*?)$ query.php?page=$1
Должно работать нормально, верно? За исключением случаев, когда я пытаюсь перейти к anyfile.php , query.php print_r — это $_GET примерно так:
Array ( [page] => query.php )
Я чувствую, что это, возможно, как-то связано с тем, что Apache переписывает уже переписанный URL-адрес или что-то в этом роде.
Короче говоря, я перенаправляюсь правильно, но каким-то образом GET var перепутан.
Кто-нибудь может мне помочь? Я работал над этим целую вечность, и я просто не могу понять это!
Ответ №1:
Не изобретайте велосипед, посмотрите, что другие используют для этой цели:
Options -MultiViews
RewriteEngine On
# This line checks whether file exists:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Вы найдете URI страницы $_SERVER['REQUEST_URI']
. Обмен index.php для query.php и с тобой покончено.
Ответ №2:
Честно говоря, я удивлен, что вы не получаете ошибку «Слишком много перенаправлений».
Добавление RewriteCond, аналогичное следующему, должно решить проблему.
RewriteCond %{REQUEST_URI} !^query.php