【问题标题】:301 redirect non-www in subfolder via .htaccess301通过.htaccess重定向子文件夹中的非www
【发布时间】:2015-02-08 19:59:33
【问题描述】:

我正在尝试使用 .htaccess 文件将所有非 www 页面重定向到我网站上的 www 页面。这是一个多语言站点,在根文件夹中设置了一个丹麦语站点,在 www.domain.com/en/ 中设置了一个英语版本。

我在丹麦语部分得到了非 www 重定向,但我在英语子文件夹中遇到了问题。每个文件夹都有自己的 .htaccess。

在丹麦端,我的请求如下所示:

#301 redirect #RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*) http://www.example.com/$1 [R=301] 

我认为英语对应的应该是这样的:

#RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com/en/$
RewriteRule ^(.*) http://www.example.com/en/$1 [R=301] 

如果能得到任何帮助,我将不胜感激。

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    您不能将路径包含在%{HTTP_HOST} 变量中,该变量只包含主机名。因此,RewriteCond %{HTTP_HOST} ^example\.com/en/$ 将始终为假。

    您可以在重写规则中将路径作为正则表达式的一部分进行匹配:

    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteRule ^en/(.*)$ http://www.example.com/en/$1 [R=301] 
    

    但这没有任何意义。如果您将这些规则放在/en/ 文件夹中,那么您根本不需要检查/en/ :

    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteRule ^(.*)$ http://www.example.com/en/$1 [R=301] 
    

    如果您尚未请求以/en/ 开头的内容,则不会处理规则

    【讨论】:

    • 啊..现在很有意义..感谢您的回复! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2016-05-19
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多