2011-08-16 11 views
1

RedirectMatchを使用して同じドメインの新しいURLにリダイレクトする必要がある古いサイト構造のURLの長いリストがあります。そのトリックは、古い(ソース)URLには厄介な変数が含まれているということです。それは問題ではないですよね?私は、これらの変数を扱うために少し甘いRegexpステートメントを配置しています。それは私がやったことで、変数が正しく一致します。甘い!Regexp/htaccess rewrite fun

この問題は、RedirectMatchステートメントの2番目の部分、つまり宛先で発生します。 RedirectMatchは古いURLを新しいURLに正しく解決しますが、古い変数は新しいURLに追加されます。リダイレクトを保持したいが、リンク先URLに変数が含まれていないようにする。ここに私のコードは次のとおりです。

RedirectMatch 301 ^/Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html 

実際のリダイレクトURL:

http://www.website.com/garage.html?launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can 

誰もが私がここで間違ってやっているものに私を指すことができますか?私はちょうどそれらの厄介な古い変数を取り除き、新鮮な開始したいです。

答えて

1

「変数」であなたは、クエリ文字列(リンク先URLの例のlaunch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can一部)を意味する場合、このリダイレクトルールを使用します。

RedirectMatch 301 ^/Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html? 

唯一の違い - 新しいURLの末尾に?を。これにより、新しいURLにはの空文字列 query stringがあるとApacheに伝えるので、古いクエリー文字列がコピーされなくなります。


あなたはmod_rewriteをを使用することができた場合は、ここでのルールは次のとおりです。

# Activate Rewrite Engine 
Options +FollowSymLinks 
RewriteEngine On 

# the rewrite rule 
RewriteRule ^Shop/Category1/Category2/(.*)$ http://www.website.com/garage.html? [R=301,L] 

これは間違いなく、空のクエリ文字列にリダイレクトします。

+0

はい、私は実際にこのポストからの私の進行中の研究でそれを見つけ出し、それに渦を打ちました。その結果、追加の "?"次のような変数の先頭に追加されます。http://www.website.com/garage.html??launch_pg=itemZoomView&launch_sel=1009152&launch_pg_sp=true&title=Pig+Waste+Can –

+0

@Tela - わかりませんあなたは何をしたのですか?それはそのようにはならないはずです。私が提供したコードは100%動作します - 私はApache 2.2.17で問題のない同様のコードを利用するいくつかのWebサイトを実行します。 – LazyOne

+0

@Tela同じ仕事をするmod_rewriteパワードリダイレクトルールを追加しました。 – LazyOne