我的网络服务器上有公共和私人项目。我将所有公开的内容都放入了网络服务器根目录,并且我在private
那里有一个只能从本地网络访问的文件夹(由 .htaccess 在那里设置)。
我想简单地将每个私有项目放在private
文件夹中并自动处理请求,但希望 URL 看起来像是从 webroot 提供的。
例如,如果private/project1
我想使用 URL http://example.com/project1来提供该文件夹并且不想更改 URL。
这个简单的重写:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ private/$1
有效,但是当我有private/project2
另一个时.htaccess
:
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project2/
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Allow asset folders through
RewriteRule ^(assets/.+) - [L]
# Protect files from being viewed
RewriteRule ^(uploads.+) - [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Options -Indexes
然后会出现静态内容,但链接已损坏。我应该修改什么才能工作?
此外,如果我有一个private/project3
并浏览到http://example.com/project3/
没有问题,但是当我浏览到http://example.com/project3
(没有尾随 /)时,URL 将像http://example.com/private/project3/
在浏览器中一样可见。为什么 ?我怎样才能避免这种情况?