我有这个htaccess规则
RewriteRule ^page/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/(.*)/([0-9a-zA-Z_-_]+)
/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ page.php?lang=$1&search=$2&state_type=$3&city=$4
&stats=$5&area=$6&cost=$7 [NC,L]
第四个查询字符串是阿拉伯语,只要[0-9a-zA-Z_-]只对英文字符进行验证,我想允许任何字符。当我使用(。*)它允许任何英文字符,但当我插入阿拉伯字符时,我得到404错误。那么如何允许htaccess验证规则中的任何字符获取阿拉伯语值?
[UPDATE] 将htaccess规则更改为:
RewriteRule ^page/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ page.php?lang=$1&search=$2&
state_type=$3&city=$4&stats=$5&area=$6&cost=$7 [NC,L]
现在我没有得到404错误,但是当我回显查询字符串值(用阿拉伯语)时,我得到空值,当我将其更改为英语时,它工作正常。我试图将所有查询字符串值更改为阿拉伯语并得到相同的结果:空,因为它根本不存在。
答案 0 :(得分:2)
尝试
RewriteRule ^page/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ page.php?lang=$1&search=$2&state_type=$3&city=$4&stats=$5&area=$6&cost=$7 [B,NC,L]
.
过于贪心,所以只要找一些不是/
的东西。 B
标志将解码后的字符转换回适合查询字符串的转义字符。