У меня есть имя категории в моей базе данных, и некоторые из них имеют французские символы, такие как é è ê. Он работает по своему желанию до сегодняшнего дня, когда я попытался добавить к нему другого символа à, после чего я начал получать сообщение SERVER ERROR
Вот мой .htaccess:
Options +FollowSymlinks RewriteEngine on RewriteRule ^([A-Za-z0-9éèêà_-\s]+)-(\d+)\.htm$ classified.php?id=$2 [L]
Как вы можете видеть, он отлично работает без а.
Как добавить эту вещь в регулярное выражение?
Если вы используете всевозможные символы и буквы с акцентом, то почему бы просто не разрешить что-либо?
ПРИМЕЧАНИЕ. Использование этого правила также допускает пробелы;
Options +FollowSymlinks RewriteEngine on RewriteRule ^(.*)-(\d+)\.htm$ classified.php?id=$2 [L]
И позже, если вы решите ограничить регулярное выражение, скажем, что вам не нужен ни один из этих символов # $%, тогда вам нужно сделать исключения:
Options +FollowSymlinks RewriteEngine on RewriteRule ^([^#$%]+)-(\d+)\.htm$ classified.php?id=$2 [L]
Похоже, что расширенные символы 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]