【问题标题】:Redirect subdomain to sub-folder将子域重定向到子文件夹
【发布时间】:2017-11-30 18:33:44
【问题描述】:

我需要编写重写规则,将子域重定向到子文件夹。

示例:subdomain.domain.io 应重定向到 domain.io/apps/subdomaintest7.domain.io 应该被重定向到 domain.io/apps/test7 等等.. .

在 .htaccess 文件中,我可以通过以下条件捕获子域:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.io$
RewriteRule ?

但是如何进行重定向呢?

谢谢

【问题讨论】:

    标签: .htaccess redirect mod-rewrite


    【解决方案1】:

    您可以在站点根目录 .htaccess 中使用此规则:

    RewriteEngine On
    
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.domain\.io$ [NC]
    RewriteRule ^ apps/%1%{REQUEST_URI} [L]
    
    • RewriteCond %{ENV:REDIRECT_STATUS} ^$ 用于防止此规则循环。
    • %1 是第二个RewriteCond 中捕获的子域文本的反向引用。

    【讨论】:

    • 感谢您的回答。我遇到了以下问题: 1. 它使无限循环 2. 它仍然将子域保留在重定向主机中。我需要将 test.domain.io 重定向到 domain.io/apps/test,但它保留了子域。
    • 不,我需要保留子域。我已将脚本更改为以下内容: RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.csbuilder\.io$ [NC] RewriteRule ^ http ://csbuilder.io/apps/%1%{REQUEST_URI} [L] 但现在它重定向到该 url,就像我设置了 R 标志一样。我在 http 之后有空格,只是为了防止在这个网站上放置链接。
    • 您不能在目标 URL 中使用http://,否则会重定向。使用我建议的规则,即RewriteRule ^ apps/%1%{REQUEST_URI} [L]
    • 我错过了将它们指向同一个目录。子域指向应用程序文件夹。现在它工作正常。非常感谢!
    • 只需将第二个条件更改为RewriteCond %{HTTP_HOST} ^(?!app\.|www\.)([^.]+)\.domain\.io$ [NC] 即可在排除项中添加app.
    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 2014-09-05
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    相关资源
    最近更新 更多