1

次の状況を処理するために、htaccess リダイレクトまたは書き換えルール (mod_rewrite.c) を作成するのに助けが必要です。

http://www.mysite.com/archive/[YEAR]/archive/[YEAR]/[CORRECT-PATH]

次の場所にリダイレクトする必要があります。

http://www.mysite.com/archive/[YEAR]/[PATH]

/archive/[YEAR]/基本的に、インスタンスが 1 つしかないはずのパスの一部で誤って二重化されている外部リンクがいくつかあります。年ごとにサブディレクトリがあります (/archive/2011、/archive/2012 など)。これらの年のディレクトリは、個別の Drupal インストールのルートであり、それぞれに独自の .htaccess ファイルがあります (これにはつまずきます)。

ビットは通常、Drupal ページのエイリアスです。[CORRECT-PATH]たとえば、次のようになります。

http://www.mysite.com/archive/2012/winners/all

私はワイルドカードと一致する構文があまり得意ではありません - どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

1

これらのルールをドキュメント ルートに追加してみてください。

RewriteEngine On
RewriteRule ^/?archive/([0-9]{4})/archive/\1/(.*)$ /archive/$1/$2 [L,R=301]

これは、任意の 4 桁の年について、年が重複していることを確認します。それで:

  1. http://www.mysite.com/archive/1234/archive/2345/blah/blah何もしません
  2. http://www.mysite.com/archive/2345/archive/2345/blah/blahにリダイレクトされます
    http://www.mysite.com/archive/2345/blah/blah
  3. http://www.mysite.com/archive/1234/blah/blah何もしません。

/archive/[YEAR]問題をもう一度見てから、各ディレクトリにルールを追加する必要があります。

RewriteEngine On
RewriteBase /archive/2011/
RewriteRule ^archive/[0-9]{4}/(.*)$ $1 [L,R=301]

そしてRewriteBase、ディレクトリごとに変更します。

于 2013-01-08T00:12:52.817 に答える