私の「public_html」ディレクトリには、次の構造があります。
- root
- index.html
- blog
- index.html
- lab
- index.html
- wp
- (WORDPRESS FILES)
"lab" および "wp" ディレクトリは、正常に動作する単なるサブドメイン ディレクトリ (" http://lab.tomblanchard.co.uk " および " http://wp.tomblanchard.co.uk ") です。
基本的に、メイン ドメイン (「http://tomblanchard.co.uk」) が実際のリダイレクトなしで「ルート」ディレクトリを指すようにします。たとえば、「http://tomblanchard.co.uk」を指すようにします。 「ルート」ディレクトリ内の「index.html」ファイルに、「http://tomblanchard.co.uk/blog」が「ルート/ブログ」ディレクトリ内の「index.html」ファイルを指すようにします。の上。
「.htaccess」ファイルの次のコードを使用して、これを達成しました。
# Add directives
RewriteEngine on
# Remove ".html" extension from URLs
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
# Change root directory to "root" folder
Options +FollowSymLinks
RewriteCond %{REQUEST_URI} !(.*)root
RewriteRule ^(.*)$ root/$1 [L]
唯一の問題は、「http://tomblanchard.co.uk/root/」や「http://tomblanchard.co.uk/root/blog/ 」のようなものが、実際にはできないはずなのにまだ機能することです。アクセスできます (404)。
誰かがこれをソートする方法について何かアイデアを持っているか、これを行うためのより強力な方法を持っているなら、それは大歓迎です.
アップデート
何時間もの調査の末、最終的に希望どおりに機能するようになりました。次を使用しました。
# Add directives
RewriteEngine on
# Change root directory to "root" folder
RewriteCond %{THE_REQUEST} ^GET\ /root/
RewriteRule ^root/(.*) /$1 [L,R=301]
RewriteRule !^root/ root%{REQUEST_URI} [L]