处理-参数值中的字符

阿米特

我的网址:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章