htaccess子域重写,无重定向。

问题描述 投票:2回答:2

使用htaccess Rewrite,我想让我的url http:/*.phoneataxi.com (其中*是通配符,不包括'www')在地址栏中显示原样,但从http:/*.phoneataxi.comtest.php?c=*中获取信息。

我尝试了很多不同的方法,但都不能完全满足我的需求。大多数的例子都是将子域重定向到地址栏中的'test.php'文件,这是我不想做的。

我想避免在我的webroot中创建独立的子域和子域文件夹。

有什么好办法?

.htaccess mod-rewrite subdomain
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.seghost。.


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 引擎,并设置路径基数
  • 然后将其隔离 子域 - 第一个点前的任何字母数字
  • 在这个运行时环境中设置一个变量,该变量包含了 子域
  • 检查子域文件夹和index-file是否存在。
  • 如果它 是否 存在 -然后使用该文件作为请求处理程序(没有重定向)
  • 如果有 存在,那么请求将正常进行

旗帜

这里使用的标志将被解释 此处但上面用的都很简单。

  • [L] 最后一条规则,其他的就不用管了
  • [NC] 无大小写,无大写小写限制。
  • [QSA] 我记得这是 "查询字符串附件":D
© www.soinside.com 2019 - 2024. All rights reserved.