【问题标题】:How do I route all subdomains to index.php using htaccess without 301 redirect如何在没有 301 重定向的情况下使用 htaccess 将所有子域路由到 index.php
【发布时间】:2015-10-10 11:34:43
【问题描述】:

我想设置一个 htaccess 文件,它将对任何子域的请求路由到 /public_html/ 文件夹中的 index.php 文件。我已经将 DNS 配置为接受通配符子域。

我计划为用户提供一个个性化的网站 url 并通过子域传递用户名,因此保留 url 很重要,因此 301 重定向是不可能的。

我的 htaccess 目前看起来像这样,但不起作用(找不到服务器):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC]
RewriteRule . /index.php?subdomain=%1 [L,QSA]

我的最终目标是能够将//joebloggs.mydomain.com/foo/bar 之类的网址翻译成//www.mydomain.com/index.php?user=joebloggs&route=/foo/bar 之类的内容。

我需要在 htaccess 文件中包含什么才能完成这项工作?

【问题讨论】:

  • 您可以访问 vhost 文件吗?
  • 抱歉,我没有访问权限

标签: php apache .htaccess mod-rewrite


【解决方案1】:

这样就可以了

# if request is for a subdomain (except "www")
RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.mydomain\.com$ [NC]
# internally rewrite to index.php
RewriteRule ^((?!index\.php$).*)$ /index.php?subdomain=%1&route=$1 [L]

【讨论】:

    【解决方案2】:

    由于似乎在您尝试导航到 index.php 时执行了该规则,所以这不能通过 index.php 中的简单 php 逻辑来完成吗?

    我可能误解了您的目标,但在我看来,您可以轻松地将其替换为 GET。您的网址也可以使用这种方法。

    【讨论】:

    • 这个想法是有人可以去//username.mydomain.com/whatever/whatever,这最终会转化为//www.mydomain.com/index.php?user=username&route=/whatever/whatever——这样更有意义吗?
    • 在这种情况下,我相信您的问题可能与此问题重复; stackoverflow.com/questions/18303858/…
    猜你喜欢
    • 2020-03-31
    • 1970-01-01
    • 2013-08-26
    • 2021-10-15
    • 2019-10-23
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多