我的网址:
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无法正常工作。我无法在搜索页面上获取参数的正确值。这是由于-字符在参数中。因为当我从值中删除-字符然后它可以正常工作。
我该怎么办 ?
谢谢 !
您不能使用连字符作为定界符,并且期望也能在定界值内将其匹配。
以以下为例:
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]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句