4

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

バックグラウンド

私のホスティングでは、複数のサイトをホストできますが、それらはすべてうまく機能しています。〜/public_html/ディレクトリの下に/domains/というサブフォルダを設定しました。ここで、個別のWebサイトごとにフォルダを作成します。サーバーのフォルダー構造は次のようになります。

  • public_html
    • ドメイン
      • websiteone
      • websitetwo
      • ウェブサイト3
      • ..。

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

問題

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

私が抱えている問題は、ブラウザをナビゲートして、メインサイトの画像フォルダ(たとえば)を次のように言うことです。

www.yourmaindomain.com/images/

次に、リダイレクトを無視しているように見え、次のようにURLにサーバーディレクトリ全体が表示されます。

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

それでも実際には正しい「/imagesのインデックス」ページが表示され、すべての画像のリストが表示されます。問題なのは「きれいな」URLだけです。

私の.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ファイルは正しいように見えますか?メインドメインがアドオンドメインのように動作し、サブディレクトリがリダイレクトルールに準拠するようにする必要があります。

4

2 に答える 2

1

そのためにmod_rewriteを使用しないでください、そのために仮想ホストを使用してください。ここでは詳しく説明しませんが、必要な情報はすべて上記のリンクにあります。(ヒント:おそらく名前ベースのものが必要になります。)

おそらく、または~/public_html/のようなより一般的な場所に自分のものを移動したいと思うでしょう。/var/www//srv/www

それ以外に:本番環境でファイルを使用しないでください.htaccess

于 2010-06-07T20:48:13.523 に答える
0

私はそれをあなたと同じように整理しました。私のメインドメインでも同じ問題がありました。この.htaccessは私のために機能し、醜いURLの問題も解決します。

# .htaccess main domain to subdirectory redirect 

RewriteEngine on 
# Change example.com to be your main domain. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteCond %{REQUEST_URI} !^/subdirectory/ 
# Don't change the following two lines. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteRule ^(.*)$ /subdirectory/$1 
# Change example.com to be your main domain again. 
# Change 'subdirectory' to be the directory you will use for your main domain 
# followed by / then the main file for your site, index.php, index.html, etc. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ subdirectory/ [L]
于 2016-05-21T20:54:10.643 に答える