我正在尝试使用正则表达式创建.htaccess
重写规则,以在_
之前的网址中将-
的所有实例替换为?
。表达式不应该影响查询字符串,只影响URL。
例如,这个:
/north_america/united_states/california/?search=1&location=ca_orange_county&city=buena_park
/united_states/california/?search=1&location=ca_orange_county&city=buena_park
/united_states/south_carolina/?add-place=place_name
/canada/british_columbia/bc/?search=1&city=vancouver
/add_listing/?listing_type=place&package_id=12
将替换为:
/north-america/united-states/california/?search=1&location=ca_orange_county&city=buena_park
/united-states/california/?search=1&location=ca_orange_county&city=buena_park
/united-states/south-carolina/?add-place=place_name
/canada/british-columbia/bc/?search=1&city=vancouver
/add-listing/?listing_type=place&package_id=12
答案 0 :(得分:0)
答案 1 :(得分:0)
要在单个重定向中用连字符替换所有下划线,您可以使用以下两个规则:
RewriteEngine On
RewriteRule ^([^_]*)_+([^_]*)$ /$1-$2 [L,R=302]
RewriteRule ^([^_]*)_+([^_]*_+.*)$ $1-$2 [L]
答案 2 :(得分:0)
除非%{QUERY_STRING}在RewriteCond中,否则RewriteRule不会影响查询字符串。因此,一个简单的递归规则应该这样做:
RewriteRule ^([^_]*)_(.*)$ /$1-$2 [N]
匹配: