一連の静的URLをリダイレクトしようとしていますが、末尾のスラッシュが存在するかどうかに関係なく機能するようにしたいと思います。
/foo/bar ---> /tacos
/foo/bar/ --> /tacos
私は次のこと、およびあらゆる種類のバリエーションを試しましたが、常に末尾のスラッシュが存在する場合にのみ一致します。
RewriteRule ^foo/bar?/$ http://url.com/tacos
RewriteRule ^foo/bar(?/)$ http://url.com/tacos
RewriteRule ^foo/bar*/$ http://url.com/tacos
RewriteRule ^foo/bar(*/)$ http://url.com/tacos
明らかな何かが欠けているような気がします。助けて?
[〜#〜] ebnf [〜#〜] または [〜#〜] abnf [〜#〜] 以外では、正規表現の数量詞は前の式を参照します次の式ではありません。
だから:
RewriteRule ^foo/bar/?$ http://url.com/tacos
パスの別の部分が後に続くかどうかに関係なく、foo/barを一致させたい場合は、次のように言うことができます。
RewriteRule ^foo/bar(/.*|$) http://url.com/tacos
これは、次のいずれかに一致します。
foo/bar
foo/bar/
foo/bar/baz
つまり、a)スラッシュの後に0文字以上が続くか、b)文字列の終わりに一致します。
一方、これらは望ましくない場合があります。
RewriteRule ^foo/bar/? http://url.com/tacos # This also matches foo/barb
RewriteRule ^foo/bar/?$ http://url.com/tacos # This will not match foo/bar/baz
これも機能します:RedirectMatch 301 /foo/bar(/.*|$) http://url.com/tacos