bugfix> htaccess > 投稿

独立したサイトとしてプライマリドメインと5つのアドオンがあります。すべて順調ですが、 primary.com/addon1.com をクリックすると 、彼/彼女はプライマリWebサイトで無関係なコンテンツにアクセスできます。これを防ぎたいです。

アドオンの5つのhtaccessファイルを編集するのではなく、プライマリのルートにあるhtaccessを介した解決策を探しています。

単純に、プライマリhtaccessで次のコードを試しましたが、うまくいきません。他の多くの代替手段を試しましたが、うまくいきません。どうして?これの何が問題になっていますか?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} (.*)primary\.com$
RewriteRule ^/(addon1|addon2|addon3|addon4|addon5)(.*)$ http://primary.com [R=301,L]
</ifModule>

回答 1 件
  • RewriteRule のドキュメント  ルールパターンが適用されるリクエストURLのセクションについて説明します:動的構成ファイルのコンテキストでルールを使用する場合の相対パスセクション(ユーザーが行う)。

    A相対的 パスの意味:先行スラッシュなし( / )、それは絶対の 道。このような動的構成ファイルのロジックについて考え始めると、これは絶対に意味があります。

    したがって、パターンから先頭のスラッシュを削除することもできますが、オプションにすることをお勧めします。そうすれば、ルールは、動的構成ファイルまたは実際のホスト構成のどこで適用されても機能します。

    RewriteEngine On
    RewriteCond %{HTTP_HOST} (^|\.)primary\.com$
    RewriteRule ^/?(addon1\.com|addon2\.com)(/|$) http://primary.com/ [R=301]
    
    

    そして一般的な注意:動的構成ファイル( ".htaccess")を使用するのではなく、httpサーバーホスト構成にこのようなルールを配置することを常に優先する必要があります。これらの動的構成ファイルは複雑さを増し、多くの場合、予期しない動作の原因であり、デバッグが困難です。多くの場合、HTTPサーバーの速度が低下します。これらは、実際のhttpサーバーのホスト構成にアクセスできない場合にのみ提供されます(読んでください:本当に安いサービスプロバイダー)。

あなたの答え