0

问题:

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。

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

4

2 回答 2

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 语句绝对有效。

于 2013-08-08T03:42:05.473 回答
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]
于 2013-07-18T19:27:48.023 回答