2016-11-01 7 views
0

私は初心者ですから、.htaccessに少し問題があります。これが私が達成しようとしていることです。 DESIREDhtaccess - 2つのルールでURLを書き換えます。

URL: example.com/package/forest/

私が今持っているもの:これは、あなたがexample.com/package/forestに行くとき、意図したとおりに機能さ

RewriteRule ^package/forest/$ 
/deep/file/do_stuff.php?action=package&location=forest [R=301,QSA,L] 

do_stuff.phpによって生成されたページを取得します。私が得ることができない難しい部分は、do_stuffページに余分なGET変数を送って、同じURLを保持したい場合です。 URLを開始

example.com/package/forest/list/5/2015-10-03

、所望の静止URL: example.com/package/forest

差です、私は、書き換えまたはリダイレクト、用語は、

/deep/file/do_stuff.php?action=package&location=forest&pictures=5&date=2015-10-03 

今回はしたいです。

余分な変数を渡すかどうかにかかわらず、同じURLで終わるようにルールをどのようにスタックするかわかりません。

答えて

0
RewriteRule ^package/forest/list/(\d)/(\d{4}-\d{2}-\d{2})$ package/forest/deep/file/do_stuff.php?action=package&location=forest&pictures=$1&date=$2 

正規表現は、1つの数字と日付の2つのグループをキャプチャします。これらは後で$ 1と$ 2として使用されます。

残念ながら、私はnginxを使用しているので、私はそれをテストすることはできませんので、私は100%確信していません。 "package/forest /"がまだ一致するため、最初の書き換え後にuriが再度書き直されるかどうかについて考えましたが、文字列の末尾にあるドル記号はuriが一致しないようにする必要があります。 同じ理由で、積み重ねを心配する必要はありません。最初のルールは短期間のuriの「forest /」で終わるものにのみ適用され、2番目のルールは最後に日付が付いたものに次ぐものです。
一方、QSAフラグを使用している理由は不思議です。後続のドル記号のため、クエリを含むURIは決して一致しません。

関連する問題