我希望本地(内部网) HTTP流量转到/var/www/html文件夹,而任何公共流量都会转到子文件夹/var/www/html/public
我在httpd.conf中尝试过这种配置,并有一些不同的地方
<VirtualHost PRIVATE-IP>
DocumentRoot /var/www/html
ServerName ecn
ErrorLog /var/www/logs/error/private
CustomLog /var/www/logs/access/private common
</VirtualHost>
<VirtualHost PUBLIC-IP>
DocumentRoot /var/www/html/public
ServerName PUBLIC-DOMAIN-NAME
ErrorLog /var/www/logs/error/public
CustomLog /var/www/logs/access/public common
</VirtualHost>公共IP、私有IP和公共域名都被替换为实际文档中正确的值。
问题是,本地流量可以很好地浏览,但是远程流量被定向到根文件夹并获得403d (因为我通过我的.htaccess文件封锁了那个文件夹)。如果我将/public附加到URL中,它就能正常工作。
发布于 2014-03-07 16:31:16
我不知道你正在使用的解决方案,但从这里看,它确实是坚实的。显然我有新东西要学。
我会根据.htaccess中的IP地址重定向。我想如果有帮助的话,我可以举个例子。
RewriteCond %{REMOTE_ADDR} "!^120.0.0.([0-255])$"
RewriteRule mydomain.com/public [R,L]如果这样做不对,也许这就足以让你达到目的。您可以在httpd.conf或.htaccess文件中使用它,并将其修改为您的目的。如果你的私人IP地址不是这么简单,请告诉我。我有更复杂的例子。
发布于 2014-09-03 18:33:43
检查是否对每个IP地址使用NameVirtualHost指令。从文件中,这是必需的。
您的第一个虚拟主机是“默认”虚拟主机。我认为您的公共虚拟主机实际上没有匹配任何内容,而是被捕获在第一个“默认”虚拟主机中。我会先创建一个“虚拟”虚拟主机。试试这个:
Listen 80
# public
NameVirtualHost 11.22.33.44:80
# private
NameVirtualHost 192.268.0.1:80
<VirtualHost _default_:*>
# Default virtual host configuration
DocumentRoot /var/www/html/default
ServerName default
ErrorLog /var/www/logs/error/default
CustomLog /var/www/logs/access/default common
</VirtualHost>
<VirtualHost 192.168.0.1:80>
DocumentRoot /var/www/html
ServerName ecn
ErrorLog /var/www/logs/error/private
CustomLog /var/www/logs/access/private common
</VirtualHost>
<VirtualHost 11.22.33.44:80>
DocumentRoot /var/www/html/public
ServerName www.example.com
ErrorLog /var/www/logs/error/public
CustomLog /var/www/logs/access/public common
</VirtualHost>https://webmasters.stackexchange.com/questions/59157
复制相似问题