web-dev-qa-db-ja.com

.htaccessでサイトをリダイレクトしますが、1つのフォルダーを除外します

Webサイト全体を301リダイレクトしたいが、/uploadsディレクトリにある/rootというフォルダー内のすべてを除外したい。

私はこれをグーグルで調べましたが、何も思いつきませんでした。または、見たものが正しいとは思いませんでした。

これをクラックできますか?

54
PaulAdamDavis

これを試してください mod_rewrite ルール:

RewriteEngine on
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]

このルールは、not/uploadsまたは/uploads/(先頭の/は、.htaccessファイルで使用された場合にパスプレフィックスが削除されるためパターンに欠落しており、リクエストをexample.comの対応するパスにリダイレクトします。

68
Gumbo

単純な答え私は自分自身につまずいた。

他の呼び出しの前の上部に次を追加します

RewriteRule ^(uploads) - [L]
54
PseudoNinja

これが欲しいと思う:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/uploads/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

あなたが取得する場合 500 Internal Error次に、2行目の}の間にスペースがあることを再確認します。

24
Dominic Rodger

Mod-aliasベースのソリューション

特定のフォルダー以外のすべてをリダイレクトする

Root/.htaccessに次の行を追加します。

RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1

これにより、すべてのページ(/ uploads/*を除く)が古いドメインから新しいドメインにリダイレクトされます。

10
starkeen