Apache Redirect проблема в .htaccess - PullRequest
1 голос
/ 08 февраля 2009

У меня проблемы с получением простого заявления о перенаправлении, которое вступает в силу на моем аккаунте Godaddy У меня есть следующие утверждения в моем файле .htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.mydomain.net$ [NC]
RewriteRule ^(.*)$ http://mydomain.net/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^mydomain.net$ [NC]
RewriteRule ^/lists/$ / [R=301]

RewriteCond %{HTTP_HOST} ^mydomain.net$ [NC]
RewriteRule ^/blog/$ http://myotherdomain.net/ [R=301]

1-й редирект ВСЕГДА работает. 2-й и 3-й, однако, НИКОГДА не работают. Я просто получаю 404 с сервера. Журналы Apache не показывают никакой полезной информации - только 404.

Есть идеи, кто-нибудь? Ваша помощь будет принята с благодарностью. Спасибо

Ответы [ 4 ]

0 голосов
/ 08 февраля 2009

Просто удалите косые черты в начале. Также может быть полезно сделать косые черты в конце необязательными.

RewriteCond %{HTTP_HOST} ^mydomain.net$ [NC]
RewriteRule ^lists/{0,1}$ / [R=301]

RewriteCond %{HTTP_HOST} ^mydomain.net$ [NC]
RewriteRule ^blog/{0,1}$ http://myotherdomain.net/ [R=301]
0 голосов
/ 08 февраля 2009

Для таких простых перенаправлений лучше использовать простые директивы RedirectMatch:

RedirectMatch 301 ^/lists/$ http://mydomain.net/
RedirectMatch 301 ^/blog/$ http://myotherdomain.net/

Если вы настаиваете на использовании переписывания, убедитесь, что вы добавили флаг L в свои правила.

Apache mod_rewrite Флаги говорит:

Вы почти всегда хотите использовать [R] в сочетании с [L] (то есть использовать [R, L]), поскольку сам по себе флаг [R] добавляет http://thishost[:thisport] к URI , но затем передает это следующему правилу в наборе правил, что часто может приводить к предупреждению «Неверный URI в запросе».

0 голосов
/ 08 февраля 2009

Перезаписей по каталогам
При использовании механизма перезаписи в файлах .htaccess префикс для каждого каталога (который всегда одинаков для определенного каталога) автоматически удаляется для сопоставления с образцом и автоматически добавляется после замена была сделана.
- http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

Так что просто оставьте ведущую косую черту вне шаблона.

0 голосов
/ 08 февраля 2009

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

...