Apache 子域名重定向,子域名代表 URL 中的参数

Apache 子域名重定向,子域名代表 URL 中的参数

我正在考虑更新我的 htaccess 文件以控制正在创建的子域。我遇到了一些问题。

首先,我要设置域名http://m.domain.com/并指向http://www.domain.com/mobile.php/mobile

我希望它能像这样工作,因为我不想经历一个重构当前设置的 URL 路由的大型过程,而像这样修复它会使其变得容易得多。

我也希望它在我的开发机器上本地运行。因此下面的 URL 也有效: http://local.m.domain.com本地网站将重定向至http://local.domain.com/mobile.php/mobile

这意味着如果我传递参数,比如::http://m.domain.com/page然后它将路由到页面http://www.domain.com/mobile.php/mobile/page

到目前为止我已经这样做了,但这只是下载一个 php 文件,而不是路由任何页面。

RewriteCond %{HTTP_HOST} (^local\.|^)m\.domain\.com\.au$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mobile.php\/mobile$1 [QSA]

我知道本地或“无”选择器的正则表达式是惰性的,但我不认为这是导致它失败的原因。当然我可能错了。

任何提示或建议都将受到感激。

答案1

看起来你的规则是让你转到一个 PHP 文件。我不确定你说的“下载一个 php 文件”是什么意思,如果你指的是以纯文本形式下载代码,那么你的 php 处理程序可能存在问题,而不是路由问题。

否则,可能意味着 PHP 代码正在使用原始 URL 进行路由,而不是重写的 URL。

听起来您真正想要做的是让您的最终规则成为重定向。

所以你的规则应该是这样的。

RewriteCond %{HTTP_HOST} ^(local\.)?m\.domain\.com\.au$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://%1.domain.com/mobile.php\/mobile$1 [R=301,QSA]
#I am assuming www.domain.com and domain.com and interchangeable

相关内容