htaccess проблемы с редиректом без www - PullRequest
1 голос
/ 08 июля 2010

Я пытался все, чтобы управлять перенаправлением с www.domain.com на domain.com, но, кажется, ничего не работает для меня. Я всегда получаю петлю перенаправления - и я пробовал разные вещи, которые я нашел здесь или в Google.

Так вот мой .htaccess, может быть, кто-то может помочь мне понять, что я могу сделать, чтобы правильно перенаправить, или если здесь что-то не так.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

#  Redirect all to .php
#  Example: example.com/hello -> example.com/hello.php
RewriteRule ^(.*)$ $1.php [L,R=301]


# show example.com/index.php always as example.com/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://example.com/ [R=301,L]

Большое спасибо! Я уже потратил так много времени, пытаясь понять это.

Ответы [ 2 ]

1 голос
/ 08 июля 2010

У вас есть правило, которое всегда соответствует, которое отвечает за бесконечное перенаправление. Я обновил ваш набор правил ниже, чтобы исправить эту проблему и выполнить перенаправление, которое вы упомянули в верхней части ответа. Дайте мне знать, если это делает то, что вы ожидаете.

RewriteEngine On

# Redirect www.example.com to example.com
RewriteCond %{HTTP_HOST} ^www [NC]
RewriteRule ^.*$ http://example.com/$0 [R=301,L]

# This performs an external redirection? Is that what you want?
# Don't do the rewrite if we're already pointing at a file, otherwise we'll
# just redirect over and over because .* matches what we redirect to, too
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}      !\.php$
RewriteRule ^.+$ $0.php [L,R=301]

# show example.com/index.php always as example.com/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://example.com/ [R=301,L]
0 голосов
/ 08 июля 2010

Ответ Документация Apache , в документации рассказывается, как форсировать использование www.Вы просто должны перевернуть пример.

RewriteCond %{HTTP_HOST}   !^example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://example.com/$1 [L,R]
...