【问题标题】:htaccess subdomain rewrite without a redirecthtaccess 子域重写没有重定向
【发布时间】:2013-11-12 20:47:49
【问题描述】:

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

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

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

想法?

【问题讨论】:

    标签: .htaccess mod-rewrite subdomain


    【解决方案1】:

    我使用这个 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/

    【讨论】:

      【解决方案2】:

      更新(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 引擎并设置路径库
      • 然后隔离 子域 - 第一个点之前的任何字母/数字
      • 在这个运行时环境中设置一个包含子域的变量
      • 检查子域文件夹和索引文件是否存在
      • 如果它确实存在 - 然后将该文件用作请求处理程序(无重定向)
      • 如果存在则请求正常进行

      标志

      这里使用的标志解释here,但上面使用的很简单:

      • [L] 最后一条规则,其余的忽略
      • [NC] 无大小写,无大小写限制
      • [QSA] 我记得这是“查询字符串附加”:D

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-13
        • 2012-01-01
        • 1970-01-01
        相关资源
        最近更新 更多