我正在寻找使用多个子字符串重写网址。一个子字符串作为子目录被请求,而任何其他子字符串作为普通查询字符串参数被请求。
例如,我想重写 url
http://www.mysite.com/mark/friends?page=2
to
http://www.mysite.com/friends.php?user=mark&page=2
除了问号字符之外,我能够完成此任务。这是我的重写规则:
...
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-_]+)/friends[?]?([^/\.]+)?$ friends.php?user=$1&$2 [L]
如果我将问号更改为任何其他字符,效果会很好。问题似乎出在“?”上。字符被错误地解释为新查询字符串的开头。
我需要按原样传递 /user/friends 之后出现的任何参数。我该如何实现这个目标?
您应该使用[QSA]
标记而不是尝试重写查询字符串。[QSA]
将查询字符串传递到重写的 URL。
所以你的规则应该是这样的:
...
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-_]+)/friends/? friends.php?user=$1 [QSA,L]
您的情况非常类似于mod_rewrite 说明书中给出的使用 QSA 标志的示例 http://mod-rewrite.org/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)