我想实现的
我在我的networking服务器上有公共和私人网站,我想以某种方式将它们分开,但我希望这种分离是不可见的。
所以例如DocumentRoot是/var/www公共项目在/var/www/public ,私有项目在/var/www/private 。
如果域名是www.example.com并且我想访问public/publicproj1则URL是www.example.com/publicproj1 。 另外,如果我想private/privateproj1的URL是www.example.com/privateproj1 。
我想限制/var/www/private只能到本地networking,但public应该可以从任何地方访问。
这是一大堆private项目,我不想在apache.conf重新设置一次。
另外我想/var/www/public/startingpage服务,如果没有其他要求,所以www.example.com会显示此页面。
我到目前为止所尝试的是:
1.)将DocumentRoot设置为/var/www将公共项目放在它下面,并将一个重写规则放到private文件夹中,如下所示:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ private/$1 [QSA]
这不起作用,因为私人文件夹下的文件夹上有更多的.htaccess文件。 (例如前端控制器,论坛等需要自己的.htaccess的应用程序)
2.)将DocumentRoot设置为/var/www/private ,但是公共项目没有得到服务。 (我可以使两个不同的访问选项的文档根?)我做了像Alias /publicproj1 /var/www/publicproj1条目,但我有Redmine安装这个设置:
RewriteEngine On RewriteRule ^/$ /redmine [R] <Directory /home/www/redmine> RailsBaseURI /redmine PassengerResolveSymlinksInDocumentRoot on </Directory>
我不能用一个简单的Alias条目取代(或者我可以吗?)
我的问题
我应该创build什么文件夹结构? 我应该做什么redirect规则? 如何设置/var/www/startingpage在没有其他请求时显示?
好的,所以你想通过IP地址限制对private项目的访问,并且你有以下的目录结构:
DocumentRoot是/var/www
- 公共项目在
/var/www/public- 私人项目在
/var/www/private
所以,在你的Apacheconfiguration文件( httpd.conf )中添加一个<Directory>指令,如:
<Directory /var/www/private> Order deny,allow Deny from all Allow from 10.0.0.0/24 </Directory>
并且只有当您来自允许的networking时,该目录下的所有内容才能被访问。 (还有其他方法可以指定Allow编辑主机 )。
我的域名是
www.example.com。
我想要将/var/www/html/public/publicproj1作为www.example.com/publicproj1和/var/www/html/private/privateproj1作为www.example.com/privateproj1
这有点困难。 您将需要为每个项目重写规则或Alias指令。 正如你所指出的,这不是一个理想的情况,所以让我们看看其他一些select。
按照我上面介绍的configuration目录结构,您将可以访问www.example.com/public/proj1和www.example.com/private/proj1目录。
如果这对你有用,你就完成了。
如果这不是一个好的解决scheme,考虑移动你的公共项目,直接在/var/www/html – 你的公共项目就可以被访问为www.example.com/publicproj1 ,你的私人项目将是可访问的加上/private/ bit(可能你不会在意某个“私人”项目的URL有点丑陋,这就避免了为你的公共资料做任何Alias的需要)。
关于起始页面,如果请求www.example.com ,请按以下规则显示起始页文件夹的内容:
RewriteEngine On # Don't apply to URLs that go to existing files or folders. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Only apply to URLs that aren't already under folder. RewriteCond %{REQUEST_URI} !^/startingpage/ RewriteRule ^(.*)$ /startingpage/$1
为什么不能使用.htaccess密码保护方法限制这些文件夹?
http://viralpatel.net/blogs/password-protect-your-webpages-using-htaccess/