2

私の「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]
4

2 に答える 2

0

アドレスをブロックするルールを定義していない/rootので、何もする必要がない場合にどのようにブロックしますか?

これを試して:

#  Add directives
RewriteEngine on

RewriteCond %{REQUEST_URI} .root [NC]
RewriteRule (.*) / [L,R=404]

#  Remove ".html" extension from URLs
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

#  Change root directory to "root" folder
RewriteCond %{HTTP_HOST} ^tomblanchard.co.uk$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.tomblanchard.co.uk$
RewriteCond %{REQUEST_URI} !.root
RewriteRule (.*) /root/$1 [L,R=301,QSA]

これはテストされていないため、機能しない場合は、必要に応じて試してみてください。

于 2013-07-07T14:28:38.873 に答える