apache重写-删除www并保留路径
我的网站有两个URL:apache重写-删除www并保留路径,apache,.htaccess,rewrite,Apache,.htaccess,Rewrite,我的网站有两个URL: http://sub.domain.com/ 及 我想统一的网址,只使用没有www的版本。 但谷歌也有链接到www的版本,这些版本链接到一篇特定的文章(路径的URL)。例如: http://www.sub.domain.com/folder/some.html 我想重定向访问者,以便从地址中删除www前缀并保留文章的路径。使用上面的示例将URL重写为: http://sub.domain.com/folder/some.html 让我们澄清一下: 我想: http:
http://sub.domain.com/
及
我想统一的网址,只使用没有www的版本。
但谷歌也有链接到www的版本,这些版本链接到一篇特定的文章(路径的URL)。例如:
http://www.sub.domain.com/folder/some.html
我想重定向访问者,以便从地址中删除www前缀并保留文章的路径。使用上面的示例将URL重写为:
http://sub.domain.com/folder/some.html
让我们澄清一下:
我想:
http://www.sub.domain.com -> http://sub.domain.com
及
在应用规则之后:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]
我得到:
http://www.sub.domain.com -> http://sub.domain.com
^^它工作正常:)
及
^^这是错误的:(
我的其他当前htaccess规则:将其添加到web根目录中的
.htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]
将其添加到web根目录中的
.htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]
我通常建议使用请求URI,而不是常见的^(.*)和$1: 优点:
- 请求URI正确地保留了缺少尾部斜杠的路径($1不这样做)。因此
将完全重定向到olddomain.com/path
。仅使用$1时newdomain/path
将重定向到olddomain.com/path/
,但缺少尾部斜杠的路径段将被删除newdomain/path/
- REQUEST_URI正确地保留了任何查询字符串,这将需要$1解决方案的附加QSA标志
- 请求URI正确地保留了缺少尾部斜杠的路径($1不这样做)。因此
将完全重定向到olddomain.com/path
。仅使用$1时newdomain/path
将重定向到olddomain.com/path/
,但缺少尾部斜杠的路径段将被删除newdomain/path/
- REQUEST_URI正确地保留了任何查询字符串,这将需要$1解决方案的附加QSA标志
www.
,否则你可以执行任何操作。发布你的日志当前规则并检查您是否有多个htaccess文件。我的htaccess规则:我没有多个htaccess文件。禁用我的规则后(在它们之前添加
)你能访问sub.domain.com/folder/some.html吗?如果没有,问题就出在别处。检查你是否有/folder/.htaccess
,因为你的根htaccess
也不会重定向。不过,它有一条规则说如果/component/any page.php
(或html等)改为提供index.php
。但是,即使这样也不会重定向,也就是说,你的浏览器url应该保持不变。是的,无论有没有规则,我都可以直接访问sub.domain.com/folder/some.html。这并不像我预期的那样工作。如果你使用地址www.sub.domain.com,它会将我重定向到sub.domain.com,这没关系。但是如果我使用browser将我重定向到主页,而不是。这意味着你在某个地方有一个冲突的规则,因为我的规则不匹配,除非你在域名中有www.
。发布你的当前规则并检查你是否有多个htaccess文件。我的htaccess规则:我没有多个htaccess文件。禁用我的规则(在它们之前添加#
)你能到达sub.domain.com/folder/some.html吗?如果没有,问题就在别处。检查你是否有/folder/.htaccess
,因为你的根htaccess
也不会重定向。不过,它有一条规则说如果/component/any page.php
(或html等)改为提供index.php
。但是,即使这样也不会重定向,即您的浏览器url应该保持不变。是的,无论有无规则,我都可以直接访问sub.domain.com/folder/some.html。
http://www.sub.domain.com/folder/some.html -> http://sub.domain.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^ http://sub.domain.com%{REQUEST_URI} [R=301,L]