Избегайте .htaccess, показывающего переменные в конце URL - PullRequest
0 голосов
/ 23 марта 2012

У меня тут странная проблема; Следующий .htaccess работает, но теперь (после перехода на выделенный сервер) он просто добавляет переменную в конце URL-адреса в адресной строке браузера; Например:

Если я назову это .. http://www.mydomain.com/sports

Переписывается так .. :( http://www.mydomain.com/index.php?u=sports

Я просто хочу, чтобы он оставался таким же, как его называли :)

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?u=$1 [NC]

Спасибо заранее!

1 Ответ

1 голос
/ 23 марта 2012

Последнее правило должно выглядеть так:

RewriteRule ^([^?]*) index.php?u=$1 [L,QSA]

[QSA] - если заменяющий URI содержит строку запроса, по умолчанию Поведение RewriteRule заключается в отбрасывании существующей строки запроса и замените его на вновь созданный. Использование флага [QSA] приводит к строки запроса для объединения.

[L] - флаг [L] заставляет mod_rewrite прекратить обработку набора правил. В большинстве случаев это означает, что, если правило совпадает, больше нет правила будут обработаны. Это соответствует последней команде в Perl, или команда перерыва в C. Используйте этот флаг, чтобы указать, что текущий Правило должно применяться немедленно, без учета дальнейших правил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...