2013-07-18 45 views
0

问题:链接htaccess的重写后破

1)需要的所有URL总是重定向到非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。

你能指出我做错了什么吗?

回答

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] 
+0

嗨,感谢卢卡斯的回复。对不起,我没有马上看到它。 – user2596894

+0

不幸的是,它不工作。网站上的所有链接仍然404,并测试www版本的子域也404s,而不是解决非www版本... – user2596894

+0

唯一的.htaccess代码,我发现,实际上拉起整个网站(尽管可怕的重复内容...... www和非版本)是: – user2596894

0

在您提供年7月26日评论,

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

是用来改写的HTML文件为PHP文件的请求,所有请求的规则。这通常是为搜索引擎优化,使网页显示为静态HTML而不是动态PHP的情况下,PHP主要用于减少代码重复。

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

我建议你只需在你的语句结尾的原始问题的.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语句有效。