web-dev-qa-db-ja.com

第2レベルのサブディレクトリのhtaccess 301リダイレクト

次のURL構造を持つディレクトリWebサイトがあります。

http://mywebsite.com/information/business-name/
http://mywebsite.com/information/business-name/product-names/    
http://mywebsite.com/reviews/business-name/
http://mywebsite.com/comments/business-name/

今、ビジネス名に変更があり、これらのURLを変更したい-

http://mywebsite.com/information/new-business-name/
http://mywebsite.com/information/new-business-name/product-names/    
http://mywebsite.com/reviews/new-business-name/
http://mywebsite.com/comments/new-business-name/

古いURLをhtaccessファイルの新しいURLに301リダイレクトするにはどうすればよいですか?

現在、私は一時的に次のものを使用しています-

RewriteRule ^information/business-name/(.*)$ /information/new-business-name/$1 [R=301,L]
RewriteRule ^reviews/business-name/(.*)$ /reviews/new-business-name/$1 [R=301,L]
RewriteRule ^comments/business-name/(.*)$ /comments/new-business-name/$1 [R=301,L]

/business-name//new-business-name/に変更するだけで、1つのルールで書き換える方法はありますか?

2
Aakash

これらの3つのルールを1つに結合するには、キャプチャグループで代替(垂直バー付き)を使用し、代替で別の後方参照を使用できます。

例えば:

RewriteRule ^(information|reviews|comments)/business-name/(.*)$ /$1/new-business-name/$2 [R=301,L]

$1は、「情報」、「レビュー」、または「コメント」への後方参照になりました。

状況に応じて、これをより一般的にすることができます。

RewriteRule ^([^/]+)/business-name/(.*)$ /$1/new-business-name/$2 [R=301,L]

これは、「情報」、「レビュー」、「コメント」など、「/ business-name /」の前にある単一のサブディレクトリanyに一致します。

2
MrWhite