2012-04-12 8 views
0

を働いていない私は形で私のWebアプリに識別子を渡すことがmod_rewriteを使用しています:のmod_rewriteはディレクトリ名で

http://clipi.ca/1W 

私は、単純な正規表現でこれらを識別しています:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)$ 
RewriteRule ^(.*)$ /index.php?urlid=%1 [L,QSA] 

...ほとんどの場合うまく動作します。しかし、私は、識別子がディレクトリの名前である場合、書き換えに失敗し、Apacheがディレクトリインデックスを返すことに気付きました!

この動作を停止して、書き換えルールをディレクトリにも適用するにはどうすればよいですか? (ディレクトリ内の実際のファイルが参照されるとすぐに、書き換え条件は失敗し、問題はありません)。

答えて

0

私は自分自身を考え出したかもしれないと思います:明らかに、Apacheは末尾にスラッシュファイルシステム上のディレクトリにマップする要求はの前にの前に書き換えルールを適用します。それが動作しているようだ...

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)/?$ 

:それはIMOが、私の条件の正規表現にオプションの末尾にスラッシュを追加することにより、一種の愚かです!

でも、理想的な解決策は、Apacheをにすることではなく、に先行するスラッシュを追加することです。誰かがそれを行う方法を知っているなら、ここにそれを掲示すれば、私はあなたに答えのクレジットを与えます。

関連する問題