0

次のように、存在しないページをデフォルトのページにリダイレクトするために、htaccess ファイルにいくつかの mod_rewrite ルールがあります。

  • http://domain.tld/category1/subcategoryX
  • http://domain.tld/category1/subcategoryX/
  • http://domain.tld/category1/subcategoryX/property1
  • http://domain.tld/category1/subcategoryX/property1/

すべてリダイレクト

  • http://domain.tld/category1/subcategoryX/property1/value1

サブカテゴリとプロパティにはページがなく、値だけがあるため、このリダイレクトを行っています。

ルールは次のとおりです。

RewriteRule ^category1/[a-z-]+$             http://%{HTTP_HOST}%{REQUEST_URI}/property1/value1 [R,NC,L]
RewriteRule ^category1/[a-z-]+/$            http://%{HTTP_HOST}%{REQUEST_URI}property1/value1 [R,NC,L]
RewriteRule ^category1/[a-z-]+/property1$   http://%{HTTP_HOST}%{REQUEST_URI}/value1 [R,NC,L]
RewriteRule ^category1/[a-z-]+/property1/$  http://%{HTTP_HOST}%{REQUEST_URI}value1 [R,NC,L]

ルールは機能していますが、ちょっと冗長です。ルールを圧縮するためのトリックはありますか? 最初の 2 つの違いは末尾のスラッシュだけで、最後の 2 つも同様です。

4

1 に答える 1

0
RewriteRule ^(category1/[a-z-]+)/?$             /$1/property1/value1 [R,NC,L]
RewriteRule ^(category1/[a-z-]+/property1)/?$   /$1/value1 [R,NC,L]

または、category1/ *で始まるすべての URL をリダイレクトすることもできます。

RewriteRule ^(category1/[a-z-]+)  /$1/property1/value1 [R,NC,L]
于 2012-04-27T17:56:39.047 に答える