在我的“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 ”指向到“root”目录中的“index.html”文件,我希望“ http://tomblanchard.co.uk/blog ”指向“root/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]