我有这个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验证规则获得阿拉伯语值?
(更新)修改htaccess规则为:
RewriteRule ^page/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ page.php?lang=$1&search=$2&
state_type=$3&city=$4&stats=$5&area=$6&cost=$7 [NC,L]
现在我没有得到404错误,但当我回显查询字符串值(这是在阿拉伯语)我得到空值,当我把它改成英语它工作得很好。我试图将所有查询字符串值更改为阿拉伯语,并得到相同的结果:空,因为它根本不存在。
Try
RewriteRule ^page/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ page.php?lang=$1&search=$2&state_type=$3&city=$4&stats=$5&area=$6&cost=$7 [B,NC,L]
.
太贪心了,所以只要找一个不是/
的。B
标志将解码后的字符转换回适合查询字符串的转义字符。