mod_rewrite: почему он работает локально, а не онлайн? - PullRequest
0 голосов
/ 01 мая 2009

Я занимаюсь разработкой приложения локально (под доменным именем .dev ).

Для работы с дружественными URL я настроил свой .htaccess так:

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Работает нормально. Досадно, что когда вы выходите в интернет, это не так здорово:

http://example.com/issue/my-slug/#23 не возвращает переменную GET. Почему?

Ответы [ 3 ]

0 голосов
/ 01 мая 2009

Полагаю, исходя из прошлого опыта, RewriteBase, вероятно, из-за того, что вы находитесь на общем сервере, или из-за другой нестандартной конфигурации.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks
0 голосов
/ 23 декабря 2009

Между URL-адресом подстановки и флагами отсутствует пробел. Вы также можете упростить свое первое правило следующим образом:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
0 голосов
/ 01 мая 2009

Я не вижу этого

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

должен совпадать с этим URL, но только он с флагом [R] выполняет внешнее перенаправление. Попробуйте закомментировать эту строку, чтобы убедиться, что не какая-то другая часть вашего приложения выполняет перенаправление. Я думаю, что есть.

...