.htaccess переписать изменение REQUEST_URI - PullRequest
1 голос
/ 17 декабря 2011

У меня есть такие ссылки:

http://domain/gotothispage

Это нужно обработать так:

http://domain/index.php?req=gotothispage

Я настраиваю файл .htaccess со следующими правилами:

RewriteEngine on
RewriteRule ^(.*) /index.php?req=$1 

Я обнаружил, что перезапись работает должным образом, но она генерирует ошибки в скрипте.Вместо того, чтобы обрабатывать и отображать страницу правильно, я получаю обратно переменные среды на странице, где REQUEST_URI выглядит так:

/gotothispage

Я подозреваю, что это вызывает проблемы со сценарием, которыйВероятно, ожидается формат:

index.php?req=gotothispage

У кого-нибудь есть предложения о том, как написать мои правила для решения этой проблемы?

Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2011

"но он генерирует ошибки в скрипте" => проблема, о которой я думаю, состоит в том, что все ваши файлы обрабатываются, включая статические файлы, такие как JavaScript и т.

Может быть, нужен маленький фильтр, прежде чем:

RewriteEngine On
# if not a static file...
RewriteCond %{REQUEST_URI} !(.*)\.(css|js|htc|pdf|jpg|jpeg|gif|png|ico)$ [NC]
# ...then rewrite to index, keep query string, and stop rewrite rules
RewriteRule ^(.*) /index.php?req=$1 [QSA,L]

А теперь две подсказки:

Пожалуйста, попробуйте использовать директиву RewriteLog: она поможет вам отследить такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Мой любимый инструмент для проверки регулярных выражений:

http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)

...