現在の共有ホスト構成でいくつかの煩わしさを修正しようとしていますが、すべてを希望どおりにセットアップする際にいくつかの問題が発生しています。
現在、私は次のフォルダ構造を持っています:
/
/.htaccess
/example
/example1
/example2
/example3
共有ホストでは、ルートディレクトリを指すようにプライマリドメインが自動的に設定されます。プライマリドメインをサブドメインにポイントするために、ルートファイルの.htaccessに次のものを追加しました。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{REQUEST_URI} !^/example/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /example/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ example/ [L]
これにより、URLが適切に書き換えられ、example.comにアクセスすると/example/サブディレクトリのコンテンツが表示されます。問題は、ルートのサブディレクトリが同じように書き直されていないことです。これは、私が実現したいと思っていた機能ではありません。例:
http://www.example.com/ = /example
http://www.example.com/example/ = /example
http://www.example.com/example1/ = /example1
http://www.example.com/example2/ = /example2
http://www.example.com/example3/ = /example3
私がしたいことは次のとおりです。
http://www.example.com/ = /example
http://www.example.com/example/ = /example/example
http://www.example.com/example1/ = /example/example1
http://www.example.com/example2/ = /example/example2
http://www.example.com/example3/ = /example/example3
何が起こるべきかについての私の理解は次のとおりです。
- http://www.example.comのリクエストを受け取りました。
- 最初の条件が一致しません。HTTP_HOSTが^example.com$と一致しません
- 2番目の条件:^www.example.comに一致
- 3番目の条件:REQUEST_URIがないため、一致しない^ / example /
- 4番目と5番目:これらを使用した場合と使用しない場合を試しましたが、結果は変わらないようです。私の理解では、これらの行にコメントがない場合、今すぐに使用する前に不要なものが表示されます(ファイル名とディレクトリが存在する場合、書き換えは行われません)。
- リクエストをexample.com/example/に書き直します
- 6番目の条件:URLを特定のドメインに一致させます。
- このURLに/example/サブディレクトリを使用するように常に書き直してください。
これは機能しているように見えますが、 http://www.example.com/example2/にアクセスしようとすると、問題が発生します。REQUEST_URIが/example/と一致しないので、/ example / example2に書き換える必要があると思いましたが、それは明らかに起こりません。
Apache構成にアクセスできないか、VirtualHostsをセットアップする機能がないため、.htaccessルールを使用してこれを実行できる方法があることを期待しています。私がこの単純なタスクをどのように複雑にしすぎているかについての洞察は、非常に役立ちます。