【问题标题】:Mod Rewrite Subdomain to PHP with GET variable使用 GET 变量将子域重写为 PHP
【发布时间】:2013-03-11 03:28:24
【问题描述】:

我正试图围绕 mod 重写,但似乎无法弄清楚这一点。

有没有办法可以做到以下几点?

用户输入:http://wildcard.mydomain.com

默默地写信给:

http://mydomain.com/index.php?username=wildcard

【问题讨论】:

  • 是的。实际上你不能得到什么?
  • 我认为在使用 .htaccess 之前,您应该在主机中使用星号 * 创建一个通用虚拟子域。
  • 我尝试了您的建议并为子域设置了通配符,并将其设置为重定向到存在的内容。出于某种原因,只是失败了。

标签: php .htaccess mod-rewrite


【解决方案1】:

您必须在RewriteCond 中捕获域的第一部分,然后在RewriteRule 中使用它。额外的RewriteConds 用于防止www.mydomain.comindex.php 被重写

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{HTTP_HOST} ^(.+?)\.mydomain\.com$
RewriteRule .* /index.php?username=%1 [L]

但这只是所需功能的一小部分。此外,您必须为所有 username.mydomain.com 域名设置 DNS 条目,或设置一个指向您的主机的 wildcard DNS entry *.mydomain.com

否则,例如,客户端会尝试联系jcraine.mydomain.com,但找不到 DNS 条目并抱怨。

如果这是virtual host,您还必须为每个用户名添加ServerAlias

ServerAlias jcraine.mydomain.com

或一个通配符捕获所有子域

ServerAlias *.mydomain.com

【讨论】:

  • 感谢奥拉夫。我真的很感谢你的彻底。我与我的主机交谈,发现通配符域无法通过存在问题。现在一切都已解决,因此能够让您的代码正常工作。目前,我将使用通配符方法。但很可能需要设置其他内容,以便用户可以将自己的域指向他们的个性化应用程序空间。你的信息将帮助我弄清楚如何去做。干杯!
【解决方案2】:

应该做的伎俩。

RewriteCond %{HTTP_HOST} ^(users)\.example\.com$
RewriteRule ^(.*)$    http://www.example.com/?username=%1 [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2017-07-08
    • 2016-05-08
    • 1970-01-01
    相关资源
    最近更新 更多