.htaccess - 将子域重定向到文件夹

Posted

技术标签:

【中文标题】.htaccess - 将子域重定向到文件夹【英文标题】:.htaccess - Redirect subdomain to folder 【发布时间】:2013-11-08 22:33:58 【问题描述】:

这个问题可能已经被问了一千多次了,但是我已经尝试了这么多脚本,并且在谷歌上搜索了这么久却什么也没找到,我想,让我们问问吧。

我只是希望 m.daltonempire.nl 被重定向到 daltonempire.nl/m/ 而用户不会看到 URL 更改。

所以如果请求m.daltonempire.nl/hello.php,我希望用户继续看到这个URL,而给出的页面实际上是daltonempire.nl/m/hello.php

注意:我不想要www.,所以只需http://m.daltonempire.nl

提前致谢,

以赛亚诉胡南

【问题讨论】:

【参考方案1】:

将此添加到您的网络根/ 目录中的.htaccess

RewriteEngine on
RewriteBase /

RewriteCond %HTTP_HOST ^m\.daltonempire\.nl$ [NC]
RewriteCond %REQUEST_URI !^/m(/|$) [NC]
RewriteCond %REQUEST_FILENAME !-d # not a dir
RewriteCond %REQUEST_FILENAME !-f # not a file
RewriteRule ^(.*)$ m/$1 [L]

%REQUEST_FILENAME 条件允许您访问/exists.php,而不是将其重写为/m/exists.php。如果您想重写,请删除这两个,即使这可能会覆盖现有文件和目录。

【讨论】:

谢谢,就像一个魅力!我几乎已经放弃了整个重写的事情,尝试了大约 10 种不同的方法,而其他所有方法都给了我 500 个错误。 @kK-Storm 很高兴能帮上忙 :) @RaviKThapliyal 感激不尽。很好的解释!【参考方案2】:

试试这个例子:

RewriteCond %HTTP_HOST ^([^/.]+)\.example\.com$ 
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule (.+)$ "http://example.com/%1" [L,P]

任何http://test.example.com 的请求都会映射到http://example.com/test/...

尝试使用谷歌搜索 dynamic subdomain with php and htaccess 以获得更好的搜索结果。

【讨论】:

一年后,当我尝试谷歌搜索dynamic subdomain with php and htaccess时,我发现了这个问题...... @Latheesan 导致无限循环【参考方案3】:

我在下面设置了我的子域的 CNAME:

blog.mydomain.com

到我安装在根目录下/blog/ 文件夹中的wordpress。

以前我需要使用这个url来调用wordpress:

http://blog.mydomain.com/blog/

这是丑陋的。我尝试了很多代码来重定向:

http://blog.mydomain.com/

到文件夹,以便我可以将其用作我的 wordpress 网址。

最后我得到了.htaccess 设置,这是可行的:

    RewriteEngine On
    RewriteCond %HTTP_HOST ^blog\.mydomain\.com$
    RewriteCond %REQUEST_URI !^/blog/
    RewriteRule (.*) /blog/$1

我还有 CNAME 其他子域:http://forum.mydomain.com 到 mybb 安装在文件夹 /forum/mybb/ 所以.htaccess 需要把 [L] 放在下面的每个 RewriteRule 代码上。

    RewriteEngine On

    RewriteCond %HTTP_HOST ^forum\.tophyips\.info$
    RewriteCond %REQUEST_URI !^/forum/mybb/
    RewriteRule (.*) /forum/mybb/$1 [L]

    RewriteCond %HTTP_HOST ^blog\.tophyips\.info$
    RewriteCond %REQUEST_URI !^/blog/
    RewriteRule (.*) /blog/$1 [L]

如果您想使用该代码,请不要忘记在应用程序配置文件中设置站点 url 和 cookie 路径,以使重定向正常工作。

【讨论】:

以上是关于.htaccess - 将子域重定向到文件夹的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 重定向影响子域

.htaccess 重定向到子域

.htaccess 将子域重定向到外部 URL

使用 .htaccess 将 URL 重定向到子域

.htaccess:将主域重定向到https:// www,子域重定向到https://(不带www)

使用 htaccess 将所有流量从根重定向到特定的子域页面