msh*_*rir 8 apache .htaccess url-rewriting
我最近更改了我的CMS,并希望重写我的一些URL以匹配新的URL /查询字符串参数格式.
旧的URL是:
http://www.mysite.com/search.cgi?tag=foo&blog_id=bar&other=baz
Run Code Online (Sandbox Code Playgroud)
新网址应为:
http://www.mysite.com/?s=foo
Run Code Online (Sandbox Code Playgroud)
换句话说,旧格式中有几个查询字符串参数,但我只关心将标签参数重写为s,同时保持相同的值.其他参数应该被丢弃.当然,参数的顺序无关紧要.标签是否是唯一的参数也无关紧要.
有任何想法吗?
小智 10
如果您的服务器支持,您可以尝试使用正则表达式和分组.如果我没有弄错你只需要重写一个参数,我想你可以尝试类似的东西(如果你在mod_rewrite中使用apache):
RewriteCond %{QUERY_STRING} ^.*(\btag\b=(\w+|&\w+;)+)
RewriteRule ^(.+) /$1?%1 [L]
编辑:我改进了正则表达式以匹配"tag",无论它在查询字符串中的位置如何,并保留特殊字符序列,例如&另外它应该避免与类似参数的匹配(即:它不匹配参数叫做"alttag").
编辑#2:另一种选择(特别是如果必须过滤几个参数)是使用外部程序进行重写.此页面:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap(特别是"外部重写程序"部分)包含有用的信息.
| 归档时间: |
|
| 查看次数: |
13707 次 |
| 最近记录: |