2013-02-08 3 views
1

У меня есть категория имя в моей базе данных, а некоторые темы имеют французские символы, такие как é è ê. Он работает не желательно до сегодняшнего дня, когда я попытался добавить еще один символ à к нему тогда я начал получать SERVER ERRORФранцузские символы с правилом перезаписи

Вот мой .htaccess:

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

Как вы можете видеть, он отлично работает без à.

Как добавить эту вещь в регулярное выражение?

+0

Проверьте это: [Htaccess Mod \ _rewrite с акцентами] (http://stackoverflow.com/questions/10451601/htaccess-mod-rewrite-with-accents). На самом деле, кажется невозможным поставить акцентированный характер внутри .htaccess. – j0k

+0

[Апачские документы на '' 'флаг' mod_rewrite' (http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b) должны помочь вам в этом. – Carsten

+0

Почему бы не использовать [^ accented]? Я думаю, что это лучше для некоторых случаев. – 2013-02-08 20:43:00

ответ

1

Если вы используете все вроде символов и акцентированных букв, то почему бы не просто позволить чему-нибудь идти от?

ПРИМЕЧАНИЕ. Использование этого правила также допускает пробелы;

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

И позже, если вы решили ограничить регулярное выражение, позволяет сказать, что вы не хотите какой-либо из этих символов # $%, то вы должны сделать исключения:

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

Похоже, что расширенные символы ASCII в URL-адресе отправляются как UTF-8 и url-encoded. Например:

/éèêà-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] 
Смежные вопросы