0

我的网址:

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 不能正常工作。我无法在搜索页面上获得正确的参数值。这是由于参数中的 - 字符。因为当我从值中删除 - 字符时,它可以正常工作。

我该怎么办 ?

谢谢 !

4

1 回答 1

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]
于 2013-10-07T08:43:31.650 回答