具有重写规则的法语字符

时间:2013-02-08 20:33:25

标签: php regex .htaccess mod-rewrite url-rewriting

我的数据库中有类别名称,有些主题有éèê等法语字符。 它按照需要工作,直到今天我尝试添加另一个字符à然后我开始得到SERVER ERROR

这是我的.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([A-Za-z0-9éèêà_-\s]+)-(\d+)\.htm$   classified.php?id=$2 [L]

正如您所看到的,没有à,它可以正常工作。

如何将该内容添加到正则表达式中?

2 个答案:

答案 0 :(得分:2)

似乎URL中的扩展ASCII字符以UTF-8和url编码的形式发送。例如:

/éèêà-1.htm -> /%C3%A9%C3%A8%C3%AA%C3%A0-1.htm

上面的URL可以通过mod_rewrite匹配,如下所示:

RewriteEngine On
RewriteRule ^(?:\w|\xC3\xA9|\xC3\xA8|\xC3\xAA|\xC3\xA0)+-(\d+)\.htm$ classified.php?id=$1 [L]

答案 1 :(得分:2)

如果您使用各种字符和重音字母,那么为什么不允许任何事情过去?

注意:使用此规则也将允许空格;

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)-(\d+)\.htm$   classified.php?id=$2 [L]

以后如果你决定限制正则表达式,让我们说你不想要任何这些字符#$%那么你必须做出例外:

   Options +FollowSymlinks
  RewriteEngine on
  RewriteRule ^([^#$%]+)-(\d+)\.htm$   classified.php?id=$2 [L]