2

使用 htaccess 重写,我希望我的网址 http://*.phoneataxi.com/(其中 * 是通配符,不包括“www”)按原样显示在地址栏中,但从 http://*.phoneataxi 获取信息。 com/test.php?c=*.

我尝试了很多不同的东西,但没有什么能完全满足我的需要。大多数示例将子域重定向到地址栏中的“/test.php”文件,我不想这样做。

我试图不必在我的 webroot 中创建单独的子域和子域文件夹。

想法?

4

2 回答 2

2

我使用这个htaccess文件让 Apache 充当另一个主机的代理:

IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ghost\.pileborg\.se$
RewriteRule (.*) http://vps.pileborg.se/ghost/$1 [P]
</IfModule>

它会导致对http://ghost.pileborg.se/的所有访问被“重定向”到http://vps.pileborg.se/ghost/

于 2013-11-01T15:57:38.533 回答
0

更新(2020)

关于这个主题的一些答案非常古老,不再按预期工作。
在搜索了几个小时真正有效的东西之后,这就是我想出的;编辑你认为合适的:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ([a-z0-9]+)\.
RewriteRule ^(.*)$ - [E=BASE:%1]

RewriteCond %{DOCUMENT_ROOT}/%{ENV:BASE}/index.php -f
RewriteRule ^(.*)$ %{ENV:BASE}/index.php [L,NC,QSA]

RewriteCond %{DOCUMENT_ROOT}/%{ENV:BASE}/index.html -f
RewriteRule ^(.*)$ %{ENV:BASE}/index.html [L,NC,QSA]

分解

确保rewrite在您的主机上安装并启用了该模块

  • 首先我们打开rewrite引擎并设置路径基础
  • 然后隔离子域- 第一个点之前的任何字母/数字
  • 在此运行时环境中设置一个包含子域的变量
  • 检查子域文件夹和索引文件是否存在
  • 如果它确实存在 - 然后将该文件用作请求处理程序(无重定向)
  • 如果存在,则请求正常进行

标志

这里使用的标志在这里进行了解释但上面使用的标志非常简单:

  • [L] 最后一条规则,其余的忽略
  • [NC]没有大小写,没有大写/小写限制
  • [QSA]我记得这是“查询字符串附加”:D
于 2020-06-10T11:49:10.047 回答