【问题标题】:Redirecting Subdirectory to Subdomain with htaccess使用 htaccess 将子目录重定向到子域
【发布时间】:2012-09-07 02:37:57
【问题描述】:

我对使用 .htaccess 比较陌生,除了我在网上阅读的内容之外,我从未做过任何编码。我正在使用 Bluehost,我想将我的博客子目录重定向到子域。示例:我想将 www.example.com/blog 重定向到 blog.example.com。

我已经有代码可以始终添加 www。到根文件夹中我博客地址的开头,但我不知道如何使用.htaccess中的代码完成上述重定向。任何帮助将不胜感激!

【问题讨论】:

  • 您要在博客地址的开头添加www?所以它变成了http://www.blog.example.com/
  • 不,它只添加了“www”。当地址以“example.com”开头时

标签: .htaccess mod-rewrite bluehost


【解决方案1】:

为了将 subdomain1 和 subdomain2 和 directory3 重定向到带有 HTTPS:// 的目录,我使用以下代码:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^subdomain1.example.com [OR]
RewriteCond %{HTTP_HOST} ^subdomain2.example.com [OR]
RewriteCond %{HTTP_HOST} ^example\.com/subdomain3 [NC]
RewriteRule ^(.*)$ https://example.com/subdirectory/$1 [R=301,L]

【讨论】:

    【解决方案2】:

    我想加两分钱,

    1) 要回答上面的问题,这个重写应该可以解决它:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !\.
    RewriteRule ^/blog$ http://blog.example.com [R=302,L]
    

    2) 但是,我认为这本身还不够,您还需要更改 DNS,以便 blog.example.com 指向正确的服务器,这可以通过类似这样的 cname 来完成:

    blog.example.com  CNAME example.com TTL 1080
    

    (不完全是它的外观,但使用您的 DNS 网络界面进行设置)。

    【讨论】:

    • 为什么要使用 302?
    • 仅猜测是否是临时的,301 可能更好
    【解决方案3】:

    RewriteCond %{HTTP_HOST} ^check.domain.info$

    RewriteCond %{REQUEST_URI} !^/check/

    重写规则 (.*) /check/$1

    【讨论】:

      【解决方案4】:

      你试过这个吗?

      RewriteEngine on
      RewriteBase /
      RewriteRule ^/blog/(.*)$ http://blog.subdomain.com/$1 [R=301,L]
      

      【讨论】:

        【解决方案5】:

        如今,许多网络主机都在其管理面板中提供了一种轻松实现子域创建的方法。你只需要去那里,选择你的子域名,然后将它指向你树中的一个目录。

        如果你不能,那么它会稍微复杂一些(你需要将该子域解析为你的服务器 ip,配置一些虚拟主机......等等)并且你可能没有足够的权限来做到这一点(除非您在专用服务器上)。

        编辑 2

        要将对 www.example.com/blog 的请求重定向到 blog.example.com,请尝试以下操作:

        RewriteEngine on
        
        RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
        RewriteRule ^blog/(.*)$ http://blog.example.com/$1 [L,QSA,R=301]
        
        RewriteCond %{HTTP_HOST} ^blog\.example\.com$
        RewriteCond %{REQUEST_URI} !^blog/
        RewriteRule ^(.*)$ /blog/$1 [L,QSA]
        

        【讨论】:

        • 我已经创建/设置了子域,它在 blog.example.com 上正常工作。我只是想知道如何使用 htaccess 代码将目前只显示我的主页的 www.example.com/blog 重定向到 blog.example.com。
        • 此代码是放在我的主页 (www.example.com) 的 htaccess 文件中还是放在我的子文件夹 (www.example.com/blog) 的 htaccess 文件中?只是为了消除任何额外的变量,我删除了自动添加“www”的代码。在我的网站前面并添加了您在上面建议的代码,但它不起作用。 “www.example.com/blog”只是将我带到我的主页,但 URL 不会更改为主页 URL - 它仍然是“www.example.com/blog”。有什么想法吗?
        • 该代码放在你的主页而不是博客目录中,它不是用于将 www.example.com/blog 重定向到 blog.example.com,它用于重定向 blog.example 中的请求。 com 到博客目录(见我编辑的答案)
        • 我需要将 www.example.com/blog 重定向到 blog.example.com 的代码。上面的代码是这样做的吗?
        • 我不明白为什么使用RewriteRule ^(.*)$ /blog/$1。这看起来是将流量发送回子目录。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-28
        • 1970-01-01
        • 2015-10-22
        • 2017-06-26
        • 1970-01-01
        相关资源
        最近更新 更多