0

このコードを使用して、domain.com / page / soft-15 / android-26 /からpage.php?cat = 15&os=26に書き換えようとしています。

RewriteRule ^page/([0-9]+)\-([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)$ page.php?cat=$1&os=$2

正常に機能すると思いますが、両方のルールを機能させたまま、domain.com / page /とdomain.com/page(最後のスラッシュなし)をdomain.com/page.phpに書き換えるにはどうすればよいですか?

4

3 に答える 3

1

わかりました、Jimp と Jon のコードを混ぜてできたと思います

RewriteRule ^page/?$ page.php [L]
RewriteRule ^page/(?:[a-zA-Z0-9-]*-)?([0-9]+)/(?:[a-zA-Z0-9-]*-)?([0-9]+)/?$ page.php?cat=$1&os=$2 [L]
RewriteRule ^page/(?:[a-zA-Z0-9-]*-)?([0-9]+)/?$ page.php?cat=$1 [L]

この数学と

domain.com/page
domain.com/page/
domain.com/page/soft-15
domain.com/page/soft-15/
domain.com/page/15
domain.com/page/15/
domain.com/page/soft-15/android-26
domain.com/page/soft-15/android-26/
domain.com/page/soft-15/26
domain.com/page/15/26
and so on...
于 2012-10-03T12:41:39.650 に答える
0

/?パターンに末尾を追加します($アンカーの前)。はオプション?になります。/

さらに、パターンは後ろ向きに見え、文字の前の数字と一致します。これを試して:

RewriteRule ^page/(?:([a-zA-Z\d-]*)-)?(\d+)/(?:([a-zA-Z\d-]*)-)?(\d+)/?$ page.php?cat=$1&os=$2

これは、次のようなこれらのバリエーションと一致する必要があります。

domain.com/page/soft-15/android-26
domain.com/page/soft-15/android-26/
domain.com/page/15/android-26
domain.com/page/15/android-26/
domain.com/page/soft-15/26
domain.com/page/soft-15/26/
domain.com/page/15/26
domain.com/page/15/26/
于 2012-10-02T22:36:11.757 に答える
0

あなたの後方参照は、あなたが使用している例ではうまくいかないようです:

  • /page/soft-15/android-26/
  • page.php?cat=15&os=26

あなたの正規表現は一致しているように見えます:

  • /page/15-soft/26-android/

そして次のように書き換えます。

  • page.php?cat=15&os=soft

あなたの例で行くなら、あなたは次のようなものが欲しいでしょう:

RewriteRule ^page/[a-zA-Z0-9-]*?-([0-9]+)/[a-zA-Z0-9-]*?-([0-9]+)/?$ page.php?cat=$1&os=$2
RewriteRule ^page/[a-zA-Z0-9-]*?-([0-9]+)/?$ page.php?cat=$1
RewriteRule ^page/?$ page.php
于 2012-10-02T22:53:26.757 に答える