使用带有重写规则和页面 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)它不起作用

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

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

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

您可能正在查找 QSA(查询字符串追加)参数。它将旧的查询字符串附加到新的 URL (?id=... → ?username=...&id=...)

您只需将 [L] 替换为 [L,QSA] 即可将其添加到您的参数中。

可以在位于 http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa

的 Apache 文档中找到有关其工作原理的更多信息