1

私は初心者で、次のページの適切な 301 リダイレクトを見つけようとしています。ここではっきりしていることを願っています:)私の.htaccessファイルでは、すべてのページを個別に行うことなく、ページを1ページ「上」にリダイレクトしたいと考えています。

元のページは次のようになりました。

www.doctors.com/skin/california/best-skin-doctors-california/
www.doctors.com/skin/california/best-skin-doctors-california/?page=1
www.doctors.com/skin/california/best-skin-doctors-california/?page=2

....等。....好きに /?page=33

次のようなその他のカテゴリと状態:

 www.doctors.com/heart/new-york/best-heart-doctors-new-york/
 www.doctors.com/heart/new-york/best-heart-doctors-new-york/?page=1
 www.doctors.com/heart/new-york/best-heart-doctors-new-york/?page=2

...等。.....再びいいね /?page=24 まで

それ以来、長い URL を排除するためにページ構造を変更しました...次のように:

www.doctors.com/skin/california/
www.doctors.com/skin/california/?page=1
www.doctors.com/skin/california/?page=2

等々……同様に……

 www.doctors.com/heart/new-york/
 www.doctors.com/heart/new-york/?page=1
 www.doctors.com/heart/new-york/?page=2

長い URL を持つ元のページを、.htaccess ファイル内の新しい短縮バージョンに「一括」リダイレクトするにはどうすればよいですか? お時間を割いていただき、誠にありがとうございました。

4

1 に答える 1

1

mod_alias を使用すると、これをドキュメント ルートの .htaccess ファイルに簡単に追加できます。

RedirectMatch 301 ^/([a-z\-]+)/([a-z\-]+)/[a-z\-]+/$ /$1/$2/

ただし、リダイレクトの動作にさらに制限が必要な場合は、Apache の mod_rewriteモジュールを使用できます。ディレクティブを見るとRewriteCond、ルールに条件を課して、すべてを .htaccess に入れることができます。主なルールは mod_alias' と非常によく似ていますRedirectMatch。例:

RewriteRule ^([a-z\-]+)/([a-z\-]+)/[a-z\-]+/$ /$1/$2/ [R=301,L]

どちらの場合も、クエリ文字列 (page=3 の部分) は単に新しいターゲットに追加されます。やのようなリクエストが行われたときにこのルールを除外したい場合は、 でできるさまざまなことをRewriteCond調べてください。/images//themes/

RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/themes/
RewriteRule ^([a-z\-]+)/([a-z\-]+)/[a-z\-]+/$ /$1/$2/ [R=301,L]

したがって、リクエストが で始まらず、リクエストが で始まら/images/ ない場合/themes/は、ルールを適用します。この例では、 http://host.com/themes/subSilver/magic-icons/へのリクエストがhttp://host.com/themes/subSilver/にリダイレクトされないようにします。

于 2012-07-09T16:26:58.120 に答える