我试图用连字符代替下划线,只对一个特定的参数,然后执行301重定向。我已经知道了如何替换它们,并将其应用于整个URL,但无法解决如何只为一个参数替换它们。现在我有一个:
RewriteCond %{QUERY_STRING} ^state=([a-zA-Z_]+)&city=([a-zA-Z_]+)$
RewriteRule city.html /find/this/in/%2/%1/? [L,R=301]此301重定向如下: mysite.com/city.html?state=va&city=dunn_loring
至此: mysite.com/find/this/in/dunn_loring/va/
我希望它能将301重定向到:mysite.com/find/this/in/dunn/va/
本质上,我只想用连字符替换上面htaccess示例中'%1‘部分的下划线。提前谢谢你的指点
发布于 2015-05-29 04:47:15
下面的解决方案对下划线上的数字没有限制。第一个RewriteRule替换看到的第一个下划线,N标志导致处理重新开始,所以规则将继续应用,直到所有下划线都被替换。当不再留下下划线时,将发出重定向。
RewriteCond %{QUERY_STRING} ^state=([a-zA-Z_]+)&city=([a-zA-Z-]+)_([a-zA-Z_-]+)$
RewriteRule city.html /city.html?state=%1&city=%2-%3 [N]
RewriteCond %{QUERY_STRING} ^state=([a-zA-Z_]+)&city=([a-zA-Z-]+)$
RewriteRule city.html /find/this/in/%2/%1/? [L,R=301]https://stackoverflow.com/questions/30520519
复制相似问题