мод_перезапись:почему это работает локально, а не онлайн?

StackOverflow https://stackoverflow.com/questions/809412

Вопрос

Я разрабатываю приложение локально (под доменным именем <мойдомен>.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.Почему?

Это было полезно?

Решение

Основываясь на прошлом опыте, я предполагаю, что это 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

Другие советы

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

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

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

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

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top