301将www和非www重定向到伪目录

时间:2011-02-18 22:26:35

标签: .htaccess redirect http-status-code-301

我希望我的网站始终重定向到默认语言(如果用户尚未请求) - 即如果默认语言是英语,我想将用户重定向到 http://domain.com/英语/ 当他/她进入 http://domain.com/ 时。

同时,我想从网址中删除“www”部分,并通过 http://domain.com/index.php 重定向所有流量。

我有以下.htaccess文件,该功能在用户输入 www.domain.com 时效果很好,但在用户输入 domain.com 时却无效(没有'万维网')。我做错了什么?

#
# 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 个答案:

答案 0 :(得分:1)

试试这个:

# 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]

答案 1 :(得分:0)

尝试

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]

答案 2 :(得分:0)

我认为以下内容应该有效:

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

您说主机不是www.example.com,然后重定向到它。