0

doc/name_of_doc-docのようなURLをdoc/name_of_docに書き直して、phpに渡そうとしています。

RewriteRule ^([0-9a-zA-Z\-\_]+)$ /doc/index.php?doc=$1

これは問題なく動作します

name_of_doc-docにname_of.doc-docのようにドットが含まれる可能性があるという事実に対処しようとしています

私が行けば

RewriteRule ^([0-9a-zA-Z\-\_\.]+)$ /doc/index.php?doc=$1

-と_と。が必要です。どのように1つまたは別のものを持っていますか?ドットやダッシュのように?数字がない場合はどうなりますか?

ありがとう

4

2 に答える 2

1

あなたの正規表現がまったく機能していないことに驚いています。見た目では、ファイル名が正確に1文字の長さの場合にのみ機能するはずです...これを修正するには、の+後にを追加してください。]

あなたはそれをうまくやっているので、それはあなたの他のバグも修正するかもしれません。

[0-9a-zA-Z._-]ちなみに、何もエスケープする必要がないように使用してください(_特別な意味はなく.、文字クラスでは意味を失い、クラス-の最初または最後の文字である場合は意味がありません)

于 2012-05-15T13:10:27.080 に答える
0

なぜあなたはそれが必要ですか?とにかく、最も簡単な方法はルールを複製することです。

RewriteRule ^([0-9a-zA-Z\.]+)$ /doc/index.php?doc=$1
RewriteRule ^([0-9a-zA-Z\_]+)$ /doc/index.php?doc=$1

または、1つのルールですが、読みにくいです。

RewriteRule ^(([0-9a-zA-Z\.]+)|([0-9a-zA-Z\_]+))$ /doc/index.php?doc=$1
于 2012-05-15T13:08:58.013 に答える