【问题标题】:htaccess redirect for subdomains -> similarly-named subdirectories?htaccess 重定向子域-> 类似命名的子目录?
【发布时间】:2010-11-17 15:53:15
【问题描述】:

我正在重组一个网站,其中有大量内容目前停在如下所示的 URL 上。

http://string.domain.com/year/month/dd/string-pulled-from-title

出于各种原因,我想将所有新内容停放在如下所示的 URL 上

http://www.domain.com/blogs/string/year/month/dd/string-pulled-from-title

我想对未来的内容进行更改,但不希望所有旧内容都变为 404。

我相信我的 htaccess 中的 301 重定向规则可以解决问题,将所有通过旧链接传入的引用流量发送到新格式。

但是这条规则应该是什么样的呢?我已经阅读了一些教程,但在任何示例中都没有找到这种确切的情况。

注意,我不想对所有子域都这样做,只对大约 10 个特定的子域执行此操作。因此,如果有人可以帮助我找出其中一个,那么我可以在我的 htaccess 中为每个子域复制粘贴 10 次并进行设置。

【问题讨论】:

    标签: .htaccess http-status-code-301


    【解决方案1】:

    将其放入旧站点的.htaccess 文件中(将域调整为您的实际域):

    RewriteEngine On
    RewriteRule ^(.*)$ http://example.com/blogs/string/$1 [R=301]
    

    这将在旧站点抓取这部分 URL:

    year/month/dd/string-pulled-from-title
    

    并将其重定向到新位置下的新站点:

    blogs/string/year/month/dd/string-pulled-from-title
    

    或者,如果您想要更多变量,例如,无需自定义修复每个 .htaccess,请将其放入每个子域的文件中:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.*).example.com
    RewriteRule ^(.*)$ http://example.com/blogs/%1/$1 [R=301,L]
    

    如果您要重定向到同一个域,并且它包含 www,请将重写规则调整为以下内容:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.*).example.com
    RewriteCond %{HTTP_HOST} !^www.example.com [NC]
    RewriteRule ^(.*)$ http://example.com/blogs/%1/$1 [R=301,L]
    

    注意第二个RewriteCond,它会检查以确保请求的网址包含前导www,如果目标网址本身包含www,这可能会导致无休止的重定向并会尝试重定向该子域。

    【讨论】:

    • 不确定这正是我所得到的,我需要做一些更复杂的事情。这行得通吗? RewriteRule ^(.*)$ http://$1.example.com/$2 example.com/blogs/$1/$2 [R=301] 这就是我需要做的结构。但是这种语法会起作用吗?
    • 并非如此,但已采取这一点并应用了编辑以提供更灵活的解决方案。
    • 这创建了一个重定向循环。当我将示例中的这两行粘贴到我的 htaccess 文件中时,地址栏中会显示以下内容。 example.com/blogs/www?q=blogs/www&q=blogs/www&q=blogs/… 我想说example.com/blogs/string
    • 啊,没有考虑领先的www,所以在这种情况下调整了答案。
    • 太棒了。这就像修复我旧博客文章的断开链接的魅力。有没有办法可以编辑它,使其仅触发在 example.com 之后有内容的 URL?我想根据与“subdomain.example.com/something”不同的一组规则重定向“subdomain.example.com”。这是最后一个缺失的部分。非常感谢。
    猜你喜欢
    • 2013-09-30
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2014-08-28
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多