2011-07-10 33 views
2

正規表現[0-9]{1,10}[-][0-9a-z]{5,9}を作成して1〜10の数字を探し、その後にダッシュと5〜9の数字と小文字を追加しました。しかし、htaccessファイルでそれを使用して、http://website.com/realpage.php?id=00000-a0a0aaa0からhttp://website.com/00000-a0a0aaa0までのURLをマスクするにはどうすればよいですか?正規表現をhtaccessファイルでどのように使用しますか?

私は、現時点で使用しているルールは...

RewriteRule /[0-9]{1,10}[-][0-9a-z]{5,9}/?$ realpage.php?id=$1 [QSA,L] 

です...しかし、それは動作していないようです。

答えて

1

まず、私の推測では、逆の方法でマスクしたいと思うでしょう。

とにかく、あなたのRewriteRuleは次のようになります。

RewriteRule ^([0-9]{1,10}-[0-9a-z]{5,9})/?$ realpage.php?id=$1 [QSA,L] 

注:

  1. あなたのルールが.htaccessファイルであり、あなたがスラッシュであなたのパターンをラップ する必要はありませんと仮定すると、(/) 。
  2. には、最初のスラッシュ(ドメインの後ろにある)が含まれている必要はありません。
  3. 真ん中のダッシュは、ダッシュが1つだけ必要なので、角かっこで囲む必要はありません。
  4. 最後に、この のケースで$1を使用して、カッコ内の全体を (実際のパスへの参照(再書き込み))できるようにする必要があります。

希望があります。

+0

ルールが.htaccessではなく設定ファイル(たとえば、 '')の中にある場合、スラッシュは必須です – LazyOne

+0

あなたは絶対に@LazyOneです。私の答えを今編集する。 –

0

さて、あなたはあなたが代替としてそれを使用している場合に一致したいビットの周りに括弧を必要とする、$1は、最初に一致したブラケットグループを言い、また、あなたがダッシュ-周り[]を必要としません。また

RewriteRule /([0-9]{1,10}-[0-9a-z]{5,9})/?$ realpage.php?id=$1 [QSA,L] 

、あなたはそれを他の方法を望んでいた場合、あなたの「マスクのURLから」混乱しています。

クエリ文字列のパラメータとRewriteRuleを直接照合することはできません。

これに合わせてRewriteCondを使用してから、RewriteRuleを使用して書き換えを行う必要があります。

RewriteCond %{QUERY_STRING} id=([0-9]{1,10}[-][0-9a-z]{5,9}) 
RewriteRule ^realpage.php$ /%1/ [L] 
関連する問題