我有一个CMS系统可以将丑陋的URL转换为更友好的URL。
到目前为止,而不是页面网址是这样的:
/pagebase.php?id=3644
我为每个页面设置了一个url写入设置,使其更友好。
例如:
RewriteRule ^/events$ /pagebase.php?id=3644 [I]
因此,当用户键入domain.com/events时,他们会将其拉到url上方。
这适用于几乎所有页面,除了这个我需要添加其他查询字符串以便我可以做这样的事情。
www.domain.com/events?y=2010=&m=&1d=2
那将重写为
www.domain.com/pagebase.php?id=3366&y=2010=&m=&1d=2.
唯一的问题是url写入匹配失败,因为它没有看到?y = 2010 =& m =& 1d = 2作为查询字符串,它将其视为url的一部分而失败。
我需要修改我的重写文件以允许传递查询字符串。
我想做点什么 RewriteRule ^ / events-%QUERYSTRING%$ /pagebase.php?id = 3644 +%QUERYSTRING%[I]
从匹配中删除查询字符串,然后将其附加到书写网址的末尾。我对url重写的工作方式知之甚少。
以下是我的重写文件的示例。
RewriteRule ^/events$ /pagebase.php?id=3644
RewriteRule ^/faqs$ /pagebase.php?id=3659
RewriteRule ^/gallery$ /pagebase.php?id=3645
RewriteRule ^/gifts$ /pagebase.php?id=3646
我需要能在所有页面上运行的东西,我不想修改每个规则来处理特定的查询字符串,我只想要一个通用的解决方案来传递查询字符串。
答案 0 :(得分:1)
您可以尝试匹配可选查询字符串,并将其附加到[QSA]
修饰符:
RewriteRule ^/events(\?.*)?$ /pagebase.php?id=3644 [QSA,L]
RewriteRule ^/faqs(\?.*)?$ /pagebase.php?id=3659 [QSA,L]
RewriteRule ^/gallery(\?.*)?$ /pagebase.php?id=3645 [QSA,L]
RewriteRule ^/gifts(\?.*)?$ /pagebase.php?id=3646 [QSA,L]