301 通过 .htaccess 重定向子文件夹中的非 www
301 redirect non-www in subfolder via .htaccess
我正在尝试使用 .htaccess 文件将所有非 www 页面重定向到我网站上的 www 页面。这是一个多语言站点,在根文件夹中有一个丹麦语站点,英文版本位于 www.domain.com/en/.
我在丹麦语部分使用了非 www 重定向,但我在英语子文件夹中遇到了问题。每个文件夹都有自己的 .htaccess。
在丹麦语端,我的请求如下所示:
#301 redirect #RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*) http://www.example.com/ [R=301]
我认为对应的英文应该是这样的:
#RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com/en/$
RewriteRule ^(.*) http://www.example.com/en/ [R=301]
如果能得到任何帮助,我将不胜感激。
您不能将路径作为 %{HTTP_HOST}
变量的一部分,该变量 仅包含主机名 。因此,RewriteCond %{HTTP_HOST} ^example\.com/en/$
将 总是 为假。
您可以将路径匹配为重写规则中正则表达式的一部分:
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^en/(.*)$ http://www.example.com/en/ [R=301]
但这没有任何意义。如果您将这些规则放在 /en/
文件夹中,则根本不需要检查 /en/
:
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/en/ [R=301]
因为如果您还没有请求以 /en/
开头的内容,规则将不会得到处理
我正在尝试使用 .htaccess 文件将所有非 www 页面重定向到我网站上的 www 页面。这是一个多语言站点,在根文件夹中有一个丹麦语站点,英文版本位于 www.domain.com/en/.
我在丹麦语部分使用了非 www 重定向,但我在英语子文件夹中遇到了问题。每个文件夹都有自己的 .htaccess。
在丹麦语端,我的请求如下所示:
#301 redirect #RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*) http://www.example.com/ [R=301]
我认为对应的英文应该是这样的:
#RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com/en/$
RewriteRule ^(.*) http://www.example.com/en/ [R=301]
如果能得到任何帮助,我将不胜感激。
您不能将路径作为 %{HTTP_HOST}
变量的一部分,该变量 仅包含主机名 。因此,RewriteCond %{HTTP_HOST} ^example\.com/en/$
将 总是 为假。
您可以将路径匹配为重写规则中正则表达式的一部分:
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^en/(.*)$ http://www.example.com/en/ [R=301]
但这没有任何意义。如果您将这些规则放在 /en/
文件夹中,则根本不需要检查 /en/
:
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/en/ [R=301]
因为如果您还没有请求以 /en/