1

データベースにカテゴリ名があり、テーマの中にはéèêのようなフランス語の文字が含まれているものがあります。今日まで別の文字を追加しようとすると、サーバーエラーが発生し始めました。

これが私の.htaccessです:

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

ご覧のとおり、àがなくても正常に動作します。

そのことを正規表現に追加するにはどうすればよいですか?

4

2 に答える 2

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]
于 2013-02-08T21:19:35.420 に答える
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]
于 2013-02-08T21:39:27.987 に答える