【问题标题】:Wildcard Subdomains to pass subdomain value to a script通配符子域将子域值传递给脚本
【发布时间】:2011-10-18 17:57:21
【问题描述】:

我有一个正在进行的项目,当用户尝试访问 x.website.com 时,它会显示特定状态的结果,如果不手动创建 52 个子域,我该如何处理?

有没有办法用 htaccess 做到这一点?但是,如果访问 state.website.com/search.php,这也应该有效,它会显示状态 X 的所有结果,所以我需要它是一个常量变量。

或者有更好的方法吗?有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: .htaccess subdomain wildcard


    【解决方案1】:

    您需要将wildcard DNS record 定义为*.example.com。任何访问的未定义真实 DNS 记录的子域都将被发送到通配符记录。

    请咨询您的域名注册商,看看您是否可以创建通配符记录。

    在您的 .htaccess 文件中,您可以像这样映射子域:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
    # The state is captured as %1
    RewriteRule . /index.php?state=%1 [L,QSA]
    
    # More generically - pass the state to any request
    # I think this will work without going to a redirect loop
    RewriteRule ^(.+)$ $1?state=%1 [L,QSA]
    

    index.php 中,从查询字符串中检索到状态后,可以将其存储在$_SESSION 中并将其用作搜索过滤器。

    【讨论】:

    • 所以我必须把它们都完成吗? DNS通配符和htaccess?我也认为这对于 state.website.com/search.php 不起作用是错误的吗?因为它会尝试传递给 index.php?
    • 您将需要通配符 DNS 记录和 .htaccess。但是,您可以使用 PHP 将 ?state= 的查询字符串值存储在 $_SESSION 中并检索它以进行搜索。
    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2012-03-12
    • 2012-08-21
    • 2011-07-28
    相关资源
    最近更新 更多