2011-01-20 7 views
2

要求されたURLのすべての文字を書き換えるにはどのようなパターンが必要ですか?私が試した:.htaccessすべての文字を書き換えます

RewriteRule ^([a-z\-_0-9]+)/([^/.]+)$ index.php?engine=$1&q=$2 [NC,L] 

しかし、ドット.が認識取得されていません。

答えて

9

(。*)はすべての文字と一致します。それだけで十分です。あなただけ使用することができますすべてのものと一致するように

+0

しかし、私はルークを次のように置いても、サイト上の画像に何らかの問題を抱えていても表示されません。^([az \ -_ 0-9] +)/(。*)$ index.php?engine = $ 1 &q = $ 2何の手がかり? – armand

2

:(オプションの最後のスラッシュで)^(.+)/(.+)/?$

あなたは文字クラスを使用して、既存のフォーマットに固執したい場合は、ここでの問題のカップルを持っています。文字セット/クラスの内部では、有効な正規表現のためにハイフンを最後に置くべきです。大文字も省略しています。だから、基本的な英数字に一致するように、アンダースコアとハイフンが希望:文字を使用して、

[a-zA-Z0-9_-] 

のか、エスケープ:

[\w\d_-] 

あなたの第2ブラケットセットは、現在、特に他のすべてに一致する、期間を除くとスラッシュれます。

アプリケーションデータが明確に定義されている場合は、定義された文字クラスを使用し、他のすべてのデータを404にすることができます。あなたは毛布のリダイレクトをしたい場合は、次はあなたを修正する必要があります。確かに

RewriteRule ^(.+)/(.+)/?$ index.php?engine=$1&q=$2 [NC,L] 
+0

これは正常に動作しています(*とあなたの@tomwalshamの両方ですが、なぜ画像が消えているのか、okやre-chagedのパス、手がかりなどはありません)。 – armand