RewriteRule ^add_link/(.*)$ ./add_link.php?$1
RewriteRule ^add_link/(.*)?(.*)$ ./add_link.php?$1&$2
当网址为/add_link/123123?link_id=1
时,我无法获取“link_id”,我只能在使用/add_link/123123&link_id=1
时获取该网址。为什么呢?
答案 0 :(得分:0)
因为查询字符串(问号?
之后的部分)在单独的QUERY_STRING
变量中匹配。您还可以使用[QSA]
标志追加查询字符串。所以你只需要这样做:
RewriteRule ^add_link/(.*)$ /add_link.php?$1 [QSA]
如果您确实想要匹配并捕获查询字符串,则可以执行以下操作:
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ...
在%1
替换中使用RewriteRule
从RewriteCond
获取捕获。但是,如果您只想要整个查询字符串,那么您不需要这样做,因为您可以在替换中使用%{QUERY_STRING}
。但是[QSA]
只会在您的替换中指定一个时附加到查询字符串,因此在这种情况下应该符合您的需要,如上所示。
/add_link/123123&link_id=1
适合您,因为它没有查询字符串?
,&
只是该情况下网址的一部分。