我想知道如何生成以下域名。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]