使用通配符子域重写规则和页面id作为参数user.domain.com/pageid


Using wildcard subdomain with rewrite rule and page id as parameter user.domain.com/pageid

我想知道如何生成以下域名。website.com/

我已经得到了。website.com与

工作

RewriteCond %{HTTP_HOST} !www'. RewriteCond %{HTTP_HOST} (.*)'.website'.com RewriteRule .* viewuser.php?username=%1 [L]

但是当我试图在重写的末尾添加额外的参数时(所以我可以使用_GET),它不起作用

您可能正在寻找QSA (QueryString Append)参数。它将旧的查询字符串附加到新的URL (?id=…)→?用户名=…,id =…)

您可以简单地将其添加到您的参数中,将[L]替换为[L,QSA]

关于如何工作的更多信息可以在Apache文档中找到http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa

在重写规则中不向URL添加查询字符串参数是一个好主意,而是让PHP解析URL并处理这种特殊或一般情况。通常,这确实实现了一些重要的业务规则或功能强大的技术规则,重写规则并不是放置它们的最佳位置—尽管您可以使用正则表达式,但使用它们创建花哨的规则往往会变得不可读。它是寻找代码和行为的第二个地方。

但是,如果您想在RewriteRule中添加查询字符串部分,除了查询中已经存在的部分之外,您必须添加QSA标志,因此最后一行将是

RewriteRule .* viewuser.php?username=%1 [L,QSA]