Как заставить mod_rewrite RewriteRule отображать как переписанный, даже если введен непереписанный URL - PullRequest
1 голос
/ 15 марта 2011

можно ли сделать так, чтобы переопределение URL-адресов было принудительным?

Вот пример того, что работает, http://localhost/home/ переходит к http://localhost/index.php?page=home, но URL остается прежнимпользователю.

То, что я не могу заставить работать, заставляет http://localhost/index.php?page=home отображаться как http://localhost/home/.

Я не знаю, правильно ли я используютерминологии, но я хочу, чтобы, если вы введете не переписанный URL-адрес, я хочу, чтобы переписанный URL-адрес появлялся в браузере пользователя.

Вот что я до сих пор работаю:

RewriteEngine on
Options +FollowSymLinks

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/?$ index.php?page=$1&a=$2&b=$3 [L,NC,QSA]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?page=$1&a=$2 [L,NC,QSA]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^([a-zA-Z0-9_]*)$ index.php?page=$1 [L,NC,QSA]

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Вот для чего установлен флаг [R].Если у вас есть правильно работающая перезапись, вы захотите добавить [R] к другим вашим флагам в конце вашего RewriteRule.

0 голосов
/ 29 ноября 2011

Попробуйте добавить некоторый код в ваш index.php.

Посмотрите на переменную $_SERVER['SCRIPT_URL'] для вашего ответа.Когда вы вводите «localhost / index.php? Page = home» в своем браузере, SCRIPT_URL должно равняться «/index.php».Если вы введете «localhost / home», SCRIPT_URL должно равняться «/ home».Вы можете проверить это в своем PHP-скрипте и соответствующим образом перенаправить оттуда.

...