从远程设备浏览localhost上的网站

时间:2013-09-12 13:18:11

标签: linux apache localhost vhosts

我在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工作页面。

有关如何访问指定网站的任何想法?

3 个答案:

答案 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]