サブフォルダからプライマリドメインをホストする

サブフォルダからプライマリドメインをホストする

メイン ドメインの public_html としてサブ ディレクトリを機能させるのに問題があり、そのドメインのサブ ディレクトリでも機能するソリューションを取得できません。

私のホスティングでは複数のサイトをホストすることができ、すべて問題なく動作しています。~/public_html/ディレクトリと呼ばれる/ドメイン/、各ウェブサイトごとにフォルダを作成します。例:

  • 公開_html
    • ドメイン
      • ウェブサイトワン
      • ウェブサイト2
      • ウェブサイト3
      • ...

これにより、サイトが整理された状態になります。唯一の問題は、このシステムに「メイン ドメイン」を適合させることでした。メイン ドメインは、何らかの形でアカウント (または Apache など) に結び付けられているようで、このドメインの「ドキュメント ルート」を変更できません。cPanel で追加する他のドメイン (「アドオン ドメイン」) のドキュメント ルートは問題なく定義できます。しかし、メイン ドメインは異なります。

.htaccess ファイルを編集して、メイン ドメインをサブディレクトリにリダイレクトするように言われました。これはうまく機能しているようで、私のサイトはホーム/インデックス ページで正常に動作します。

私が抱えている問題は、ブラウザでメインサイトの画像フォルダ(例)に移動しようとすると、次のようになることです。

www.yourmaindomain.com/images/

すると、リダイレクトは無視され、次のように URL にサーバー ディレクトリ全体が表示されます。

www.yourmaindomain.com/domains/yourmaindomain/images/

実際には正しい「/images のインデックス」ページが表示され、すべての画像のリストが表示されます。

以下は私が使用している .htaccess ファイルの例です。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1

RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]

この htaccess ファイルは正しいように見えますか? メイン ドメインがアドオン ドメインのように動作し、そのサブディレクトリがリダイレクト ルールに準拠するようにする必要があります。

答え1

私はそれを悪党DirectorySlashと呼ぶでしょう。

  1. それはディレクトリでのみ発生しますか?
  2. これは、末尾にスラッシュがない場合にのみ発生しますか (つまり、/imagesになります/domain/yourdomain/images/が、/images/問題ありません)?

その場合、3 つの選択肢があります。

  1. すべてのリンクの末尾にスラッシュ(/)が付いていることを確認してください。
  2. 設定しますDirectorySlash off(SEO の観点からは、二重ページ/二重ディレクトリになりますが、好ましくありません)。
  3. RewriteRule最後のものの直前にa を追加してみてくださいindex.html: (即興で思いついたので、うまくいくかどうかはわかりません)

    RewriteCond %{REQUEST_FILENAME} -d  
    RewriteCond %{REQUEST_FILENAME} !/$  
    RewriteRule ^(.*) $1/  
    

答え2

あなたの問題の1つは正規表現です。ないドットをエスケープします。つまり、ドットではなく「任意の文字」として扱われます。

^(www.)?domain.tld$

必要なもの

^(www\.)?domain\.tld$

関連情報