【问题标题】:.htaccess rewrite subdomain to directory and keep subdomain in url.htaccess 将子域重写到目录并将子域保留在 url
【发布时间】:2014-04-19 03:40:52
【问题描述】:

我需要使用 .htaccess 将子域重写为子目录,但将子域保留在 url 中,如下所示:

浏览器中访问的网址:sub1.domain.com

提供的网址:sub.domain.com/sub1/

我尝试了以下

RewriteCond %{HTTP_HOST} ^subdomain.domain.com
RewriteRule ^(.*)$ http://subdomain.domain.com/subdomain/$1 [L,NC,QSA]

但这会导致无限循环。我知道通过 php 执行此操作会更容易,但是使用 .htaccess 有什么解决方案吗?

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    您可以在文档根目录中使用此规则:

    RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC]
    RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC]
    

    说明:

    • NC: 忽略大小写
    • L:最后一条规则
    • RewriteCond %{HTTP_HOST} 行确保该规则仅对 subdomain 执行
    • (?!sub1/) 是否定的前瞻表达式,表示请求的方式不是以 /sub1/ 开头
    • RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC] 将当前路径重写为 /sub1/<uri>

    参考资料:

    【讨论】:

    • @MDeuerlein,这意味着您没有在服务器上正确设置子域。
    • 在问题中确实是过去的 op 的咖啡,无论如何,它们只是占位符,因为 op 没有透露实际的域名(有道理)。如果您遇到问题,请考虑提出不同的问题。
    • 终于……花了一个多小时弄清楚如何制作一个正确处理域和子域的 .htaccess。这个答案有效。显然,您需要用您的数据替换 'subdomain'、'domain' 和 'sub1'。
    • @bharal:我在答案中添加了解释和参考。花一些时间阅读手册并提出具体问题。
    • @anubhava 我真的很感激!
    猜你喜欢
    • 2012-05-25
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多