我的网络服务器上有公共和私人项目。我将所有公开内容放入网络服务器根目录中,并且我有一个private
我只能从本地网络访问该文件夹(由其中的 .htaccess 设置)。
我想简单地将每个私人项目放在private
文件夹并自动处理请求,但希望 URL 看起来像是从 webroot 提供的。
例如如果有private/project1
我想使用网址http://example.com/project1 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/
在浏览器中。为什么 ?我怎样才能避免这种情况?
在您的情况下,您所需要的只是 mod_alias。
然后为您的私人项目提供服务,例如:
Alias /project3 /apache/htdocs/private/project3
通过 .htaccess,您将控制访问权限。
如果您想在不重新启动服务器的情况下控制它,您可以尝试使用以下配置来实现此目的,该配置可以放置在 .htaccess 文件中:
RewriteRule ^/(project1)$ /private/$1/index.html
RewriteRule ^/(project1/)(.*)$ /private/$1$2
index.html - 项目的任何索引文件。
这样,除了您用于私有项目的路径之外,URL 的公共部分将完全可以访问。
您还可以添加 RewriteCond 来检查 IP 并仅为您的本地网络启用重写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)