1

を使用し.htaccessて、特定のサブフォルダーのセット ( blogdevmediaなど) をサブドメインに正常にリダイレクトしています。

そのようです:

www.website.com/_subs/dev/fooに向けられるdev.website.com/foo

これは、次のコード フラグメントで実現されています。

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^website.com$
RewriteRule ^(.*)$ http://www.website.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} website.com
RewriteCond %{REQUEST_URI} ^/_subs/blog/(.*)$
RewriteRule .* http://blog.website.com/%1 [R=301,L]

RewriteCond %{HTTP_HOST} website.com
RewriteCond %{REQUEST_URI} ^/_subs/dev/(.*)$
RewriteRule .* http://dev.website.com/%1 [R=301,L]

RewriteCond %{HTTP_HOST} website.com
RewriteCond %{REQUEST_URI} ^/_subs/media/(.*)$
RewriteRule .* http://media.website.com/%1 [R=301,L]

質問は:

/_subs特定のサブフォルダーの 1 つに対してリクエストが行われない場合、フォルダーへのアクセスを防ぐにはどうすればよいですか?

に行われたリクエストはwww.website.com/_subs/foo、単にリダイレクトされるようにしたいwww.website.com

私は301リダイレクトを他のさまざまな試みと一緒に使用しようとしましたが、役に立ちませんでした:(

どんな助けでも大歓迎です。

乾杯

4

1 に答える 1

2

あなたのルールは必要以上に複雑で、解決策が見えにくくなっていると思います。

これが私が思いついたものです:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?website.com$
RewriteRule ^_sub/(blog|dev|media)/?(.*)$ http://$1.website.com/$2 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www.)?website.com$
RewriteRule ^_sub(/.*)$ - [F]

RewriteCond %{HTTP_HOST} ^website.com$
RewriteRule ^(.*)$ http://www.website.com/$1 [R=301]

RewriteCond、最初の 2 つのルールを制限して、website.comおよびでのみ実行されるようにしwww.website.comます。http://blog.website.com/_sub/this-rocksおそらく、リダイレクトしたくない将来のような URL があるかもしれません。

最初の書き換えに両方のドメインを含めると、301 リダイレクトが 1 つ少なくなり、http ://website.com/_sub/blog へのリクエストが直接http://blog.website.comにリダイレクトされる時間が大幅に短縮されます。L は、このルールに一致するものが禁止としてマークされないようにします。

/_sub2 番目の書き換えは、最初のルールに一致しないで始まるものに対して 403 を返します。はグループ内にあるため、これは、、および/と一致します。外にいる場合は、別のルールがないと 403 できません。/_sub/_sub//_sub/.*//_sub

最後の書き換えは、最初のルールと同じです。L を付ける必要はありませんが、処理する最後のルールであるためです。

于 2012-11-28T08:30:31.467 に答える