2016-09-19 3 views
0

私はrootwebdirのメインルートが「/ usr/www/users/foo /」と「foo.com」のApacheサーバーを持っています。 「subdomain1.foo.com/誰タイプ「www.foo.com/subdomain1/aboutme.html」は、彼らが発見した場合:Apache:ユーザーに「www.foo.com/subdomain1/」へのアクセスを避ける

subdomain1.foo.com ---> /usr/www/users/foo/subdomain1 
subdomain2.foo.com ---> /usr/www/users/foo/subdomain2 

これは私に問題が発生します。しかし、私はいくつかのサブドメインは、そのディレクトリ内を向いていaboutme.html 'と別のURLを使用しています。私はそれを避けたいと思います。

「/ usr/www/users/foo/subdomain1」の「.htaccess」ファイル内のディレクティブを使用して、これを回避する方法があるかどうか(たとえば、404ページを表示する)

他の解決方法は歓迎します。どうもありがとうございました。

+0

確かに、あなたは確かに二つの条件で結合されているエラー文書を指すリダイレクトルールを作成することができます。しかし、問題は:あなたがそれをしたいのですか?なぜあなたは簡単に文書のルートを別々にしておきましょう。 – arkascha

+0

私のウェブホストプロバイダは私に '/ usr/www/users/foo /'へのアクセスを許可するので、ここでは 'foo.com'になります。新しい 'sub1.foo.com'サブドメインを作成しようとすると、 '/ usr/www/users/foo/sub1'になります。 – Hookstark

答えて

1

特定のサブドメインとカスタムエラードキュメントの特定のパスの組み合わせに要求を書き換えることができます。

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^subdomain1\.foo\.com$ [NC] 
RewriteRule ^subdomain1 http://foo.com/not-found.html [L] 

これは.htaccessスタイルファイルや実際のHTTPサーバのホスト構成で行うことができます:それは最も簡単なはず。可能であれば、第2の選択肢を優先する必要があります。 .htaccessスタイルファイルは悪意を持ってエラーが発生しやすく、デバッグが難しく、は実際にはサーバを遅くします。 ではなく、が実際の構成(「安価なホスティングプロバイダ」を参照)にアクセスするか、アプリケーションがそれらのファイル自体を書き込む必要がある(確かにセキュリティの悪夢です...)場合にのみ提供されます。

RewriteEngine on 
RewriteRule ^/subdomain1 http://foo.com/not-found.html [L] 
1

あなたはメイン使用してアクセスをブロックする任意のサブドメインディレクトリのすなわちsubdomain1/.htaccessにこのルールを使用することができます:ホストが暗黙的に設定されているので

httpサーバホストコンフィギュレーションのバージョンは、少し短く、よりエレガントになりますドメインfoo.com:要求されたドメイン名と相対パスの組み合わせ:

RewriteEngine on  
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com$ [NC] 
RewriteRule^- [F] 
関連する問題