【问题标题】:Problem setting 301 redirection statements in htaccess在 htaccess 中设置 301 重定向语句的问题
【发布时间】:2011-03-19 09:49:34
【问题描述】:

我在设置 htaccess 文件时遇到了一些问题。目前我有 15 个域为他们自己的网站提供服务。现在将其移至单个网站和域,我想为旧网址提供具有 301 规则的 htaccess。目标 url 取决于旧 url 的域名..

例如

http://www.previouswebsiteinspanish.com/contacto 应永久改写为http://www.newcentralwebsite.eu/es/contact

我知道我必须使用 RewriteCond,但我对它还不够熟悉,无法让它工作。

RewriteCond %{HTTP_REFERER} !^http://(www\.)?previouswebsiteinspanish/.*$ [NC]
RewriteRule ^([^/.]+)/contacto$ /$1/contact [R=301,L]

提前致谢!

【问题讨论】:

    标签: .htaccess redirect dns


    【解决方案1】:

    您当前的条件是该规则将在引用页面不在旧域上的条件下执行。这很可能不是您想要做的。 :)

    您要检查 %{HTTP_HOST} 参数,该参数仅包含当前请求的 URL 的主机名部分。

    假设您想将旧域上的所有内容重定向到es 子文件夹,则此规则将执行此操作。

    RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish.com$ [NC]
    RewriteRule ^(.*)$ http://www.newcentralwebsite.eu/es/$1 [R=301,L]
    

    然后您必须为每个旧域添加类似的规则。

    【讨论】:

    • OP 写道他想将联系人重定向到联系人 - 所以 (.*) 不起作用。
    【解决方案2】:
    RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish\.com$ [NC]
    RewriteRule ^contacto$ http://www.newcentralwebsite.eu/es/contact [R=301,L]
    

    您需要检查请求站点的主机名 HTTP_HOST。

    【讨论】:

      【解决方案3】:

      从你的例子中我写的规则是

      RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish\.com$ [NC]
      RewriteRule ^contacto$ http://www.newcentralwebsite.eu/es/contact [R=301,L]
      

      将此类规则添加到您的.htaccess。 您必须为每个域编写这样的规则。

      在上述情况下,你的 url 也有变化,所以你可能也需要处理这种特殊情况。

      【讨论】:

      • 你应该逃跑。在 RewriteCond 中。
      猜你喜欢
      • 2021-11-08
      • 2011-11-01
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多