301 перенаправить как www, так и не www в поддельный каталог - PullRequest
0 голосов
/ 19 февраля 2011

Я хочу, чтобы мой сайт всегда перенаправлял на язык по умолчанию, если он еще не запрошен пользователем - то есть, если язык по умолчанию - английский, я хочу перенаправить пользователя на http://domain.com/english/, когда он / она входит http://domain.com/.

В то же время я хочу удалить часть «www» из URL, а также перенаправить весь трафик через http://domain.com/index.php.

У меня есть следующий файл .htaccess, который отлично работает, когда пользователь вводит www.domain.com , но не когда пользователь вводит domain.com (без 'www «). Что я делаю не так?

#
# Remove WWW from URL
#

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L]

#
# Redirect all traffic through index.php
#

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

Ответы [ 3 ]

1 голос
/ 19 февраля 2011

Попробуйте это:

# Remove WWW from URL and redirect to /english/
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L]
0 голосов
/ 19 февраля 2011

Я думаю, что должно работать следующее:

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

Вы говорите, что если хост не совсем www.example.com, то перенаправьте на него.

0 голосов
/ 19 февраля 2011

Попробуйте

RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]

С помощью ?, чтобы сделать www необязательным, поэтому первое правило перехватывает оба.

Редактировать:

Использованиеэто правило для удаления www., затем используйте редирект на странице index.php, чтобы перейти к / english / вместо правила перезаписи URL.

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