我在ubuntu 12.04上。主持人文件:
127.0.1.1 site.to.browse
VHOST:
<VirtualHost *:80>
ServerName site.to.browse
DocumentRoot "/path/to/website/root"
<Directory /path/to/website/root>
AllowOverride All
Options All
</Directory>
</VirtualHost>
在我的Android设备上连接到与主机相同的WIFI我尝试使用
访问此站点192.168.178.57/site.to.browse
但是我得到了404.当我只浏览192.168.178.57时,我得到了我的默认IT工作页面。
有关如何访问指定网站的任何想法?
答案 0 :(得分:2)
您需要添加
192.168.178.57 site.to.browse
到Android手机上的主机文件,以便它知道http://site.to.browse/
在192.168.178.57
处引用您的服务器。
如果您想使用http://192.168.178.57/site.to.browse
访问您的虚拟主机,则需要在默认虚拟主机上执行本地URL重写,将页面请求重定向到所需的虚拟主机。因此,在默认vhost的Apache配置中,添加
RewriteEngine On
RewriteRule ^/*site\.to\.browse/*(.*)$ http://site.to.browse/$1 [PT,L]
不幸的是,这会导致客户端使用的URL(例如http://192.168.178.57/site.to.browse/some/page.html
)与服务器实际服务的URL(http://site.to.browse/some/page.html
)之间存在差异。特别是,绝对路径(/some/page.html
)将无法正确重定向。
您可以通过反向代理来自默认虚拟主机的内部虚拟主机来避免这种情况,例如: mod_proxy_html和/或mod_substitute用于调整内容中的URL和路径。
更实用的测试方法是将vhost中的所有内容放在顶层文件夹中,这样绝对URL只会因主机名部分而异。为此,您需要
RewriteEngine On
RewriteRule ^/*site\.to\.browse/*(.*)$ http://site.to.browse/site.to.browse/$1 [PT,L]
在默认vhost的Apache配置中,
RewriteEngine On
RewriteRule ^/*site\.to\.browse$ /site.to.browse/ [R,L]
RewriteCond %{REQUEST_URI} !^/*site\.to\.browse/
RewriteRule ^/*(.*)$ /site.to.browse/$1 [R,L]
在vhost配置中;后一部分会将http://site.to.browse/foo
重定向到http://site.to.browse/site.to.browse/foo
,包括http://site.to.browse/
到http://site.to.browse/site.to.browse/
。
显然,您不需要使用site.to.browse
作为文件夹名称;你可以使用例如mysite
。然后配置
RewriteEngine On
RewriteRule ^/*mysite/*(.*)$ http://site.to.browse/mysite/$1 [PT,L]
默认vhost上的和
RewriteEngine On
RewriteRule ^/*mysite$ /mysite/ [R,L]
RewriteCond %{REQUEST_URI} !^/*mysite/
RewriteRule ^/*(.*)$ /mysite/$1 [R,L]
在site.to.browse vhost中。后者会将不在mysite文件夹下的任何内容重定向到mysite文件夹下。
答案 1 :(得分:1)
如果您真的想通过http://192.168.178.57/site.to.browse/
访问该网站
然后我只需在默认 /etc/apache2/sites-available/default
内的VirtualHost
添加以下内容:
Alias /site.to.browse /path/to/website/root
<Directory /path/to/website/root>
AllowOverride All
Options All
</Directory>
说明:在这种情况下,您在问题中提供的VHost配置将无效。
Android客户端将向IP地址标识的主机发送请求,而不是DNS名称site.to.browse
。因此HTTP_HOST
将是192.168.178.57
。因此,Apache不会向您提供vhost配置,因为您没有从主机site.to.browse
请求某些内容。相反,将使用apache的默认配置,它位于/etc/apache2/sites-available/default
。
作为替代方案,您只需用您自己的页面替换默认的 It Works 页面,从而使该页面可用http://192.168.178.57
。
当然,您必须确保apache也绑定到计算机的公共IP。由于您获得了 It works 页面,因此我认为这是理所当然的。
答案 2 :(得分:0)
您需要编辑您的vhost或.htaccess
RewriteEngine On # Turn on the rewriting engine
RewriteRule ^site.to.browse$ index.php [NC,L]