【问题标题】:Rewrite rule .htaccess from blog.domain.com/anypath to www.domain.com/blog/anypath将规则 .htaccess 从 blog.domain.com/anypath 重写为 www.domain.com/blog/anypath
【发布时间】:2013-03-24 12:35:25
【问题描述】:

我正在尝试在我的 .htaccess 文件中编写一条规则,以便将来自 blog.domain.com/anypath 的所有访问者重定向到 www.domain.com/blog/anypath

我在下面编写的规则似乎仅将 blog.domain.com 重定向到 domain.com/blog 但如果 URL 包含诸如 blog.domain.com/path 之类的路径,则似乎无法正确重定向

RewriteCond %{HTTP_HOST} ^blog\.* [NC]
RewriteRule .* http://www.domain.com/blog [L]

感谢任何帮助。

【问题讨论】:

    标签: .htaccess url-rewriting rewrite


    【解决方案1】:

    这是因为您没有使用() 捕获组捕获路径以通过变量$1 重写。您需要将其附加到您的重定向 URL。

    RewriteCond %{HTTP_HOST} ^blog\.* [NC]
    # Capture the full path into $1 and append it to the output URL
    RewriteRule (.*) http://www.domain.com/blog/$1 [L,R=301]
    

    如果这是一个永久重定向,你应该在[L,R=301]中使用R=301

    与往常一样,请咨询the mod_rewrite documentation 了解完整详情,并使用this clever rewrite tester 进行实验。

    【讨论】:

      【解决方案2】:

      您需要捕获您的 REQUEST_URI 并将其传递到路径上。

      RewriteCond %{HTTP_HOST} ^blog.domain.com$ [NC]
      RewriteRule ^(.*)$ http://www.domain.com/blog/$1 [R=301,L]
      

      这将从博客的子域中捕获路径,并将其重定向到正确的 URL。

      例如,blog.domain.com/post/736/test 将重定向到 www.domain.com/blog/post/736/test

      【讨论】:

        猜你喜欢
        • 2011-10-23
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        • 2016-08-09
        相关资源
        最近更新 更多