我的网址:
http://www.abc.com/search_result.php?parrent_prop_type=value1&prop_type_name=-value2&location=value-3&prop_type_auto_id=value4
想要改变
http://www.abc.com/value1-value2-value-3-value4
我的规则:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search_result\.php\?parrent_prop_type=([-0-9a-zA-Z]+)\&prop_type_name=([-0-9a-zA-Z]+)\&location=([-0-9a-zA-Z]+)\&prop_type_auto_id=([-0-9a-zA-Z]+) [NC]
RewriteRule ^ http://abc.com/%1-%2-%3-%4? [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([-0-9a-zA-Z]+)-([-0-9a-zA-Z]+)-([-0-9a-zA-Z]+)-([-0-9a-zA-Z]+)/?$ search_result.php?parrent_prop_type=$1&prop_type_name=$2&location=$3&prop_type_auto_id=$4 [NC]
重写正常工作,但是在search_result.php上有问题。 实际上search_result.php无法正常工作。我无法在搜索页面上获得正确的参数值。 这是由于 - 参数中的字符。因为当我从值中移除 - 字符然后它正常工作。
我该怎么办?
谢谢!
答案 0 :(得分:1)
您不能使用连字符作为分隔符,并且希望能够在分隔值内匹配它。
以下面的例子为例:
bo-b-fred-jam-es-arth-ur
它不会知道哪些是您的分隔符连字符以及哪些是实际值。
选择不同的分隔符,或者不匹配带有连字符的值。
如果必须匹配值中的连字符,或许使用下划线作为分隔符会更明智:
bo-b_fred_jam-es_arth-ur
然后它将匹配:
RewriteRule ^([\-0-9a-zA-Z]+)_([\-0-9a-zA-Z]+)_([\-0-9a-zA-Z]+)_([\-0-9a-zA-Z]+)/?$ search_result.php?parrent_prop_type=$1&prop_type_name=$2&location=$3&prop_type_auto_id=$4 [NC]