htaccess重写后子域上的链接被破坏

时间:2013-07-18 19:11:31

标签: .htaccess redirect subdomain

问题:

1)需要所有网址始终重定向到非www 2)domain.com需要自动重定向到sub.domain.com

根据这里的其他文章,我尝试过:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(sub\.domain\.com)$ [NC]
RewriteRule ^ http:://%1%{REQUEST_URI} [R=301,L]

[必须为此添加":"以便发布]

哪个“有效”,但随后是我网站404上的所有链接。

你能指出我做错了吗?

2 个答案:

答案 0 :(得分:0)

试试这段代码:

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

RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]

答案 1 :(得分:0)

在7月26日提供的评论中,规则

RewriteRule ^(.*)\.html$ $1.php [nc]

用于将对html文件的所有请求重写为对php文件的请求。这通常是为SEO做的,在php主要用于减少代码重复的情况下,使页面显示为静态html而不是动态php。

在这些情况下,服务器上的所有页面文件通常只以php格式存在,而不是html格式。因此,如果没有此规则,所有.html文件的链接将作为.html文件的服务器请求保留,这将导致许多404.

我建议您在声明结尾处的原始问题中将此规则插入到.htaccess块中。他们应该一起玩得很好。完整性的结果:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(sub\.domain\.com)$
RewriteRule ^http://%1%{REQUEST_URI} [R=301]
RewriteRule ^(.*)\.html$ $1.php [NC]

*我的错误,标志[NC]和[OR]对于RewriteCond语句肯定有效。