我有一个CMS系统,将丑陋的url转换成更友好的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的一部分而失败。
我需要修改我的重写文件,以允许查询字符串通过。
我想做一些像^/events-%QUERYSTRING% $/pagebase.php?id=3644 + %QUERYSTRING% [I]
从匹配中删除查询字符串,然后将其附加到写入url的末尾。我只是没有足够的知识如何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
我需要的东西,将在所有的页面上工作,我不想要修改每个规则来处理特定的查询字符串,我只是想要一个通用的解决方案,将通过查询字符串。
您可以尝试匹配一个可选的查询字符串,并将其添加到[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]