1

我在 ubuntu 12.04 上。主机文件:

127.0.1.1 site.to.browse

虚拟主机:

<VirtualHost *:80>
    ServerName site.to.browse
    DocumentRoot "/path/to/website/root"
    <Directory /path/to/website/root>
        AllowOverride All
        Options All
    </Directory>
</VirtualHost>

在与主机连接到同一 WIFI 的我的 android 设备上,我尝试使用

192.168.178.57/site.to.browse

但我得到一个 404。当我只浏览 192.168.178.57/ 时,我得到了我的默认 IT WORKS 页面。

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

4

3 回答 3

2

您需要添加

192.168.178.57 site.to.browse

到您的 android 手机上的 hosts 文件,以便它知道它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]

http://192.168.178.57/site.to.browse/some/page.html不幸的是,这会导致客户端使用的 URL(例如)与服务器实际提供的 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]

在虚拟主机配置中;后一部分将重定向任何http://site.to.browse/foohttp://site.to.browse/site.to.browse/foo,包括http://site.to.browse/http://site.to.browse/site.to.browse/

显然,您不需要site.to.browse用作文件夹名称;你可以只使用 eg mysite。然后配置将是

RewriteEngine On
RewriteRule ^/*mysite/*(.*)$ http://site.to.browse/mysite/$1 [PT,L]

在默认虚拟主机上,以及

RewriteEngine On
RewriteRule ^/*mysite$ /mysite/ [R,L]
RewriteCond %{REQUEST_URI} !^/*mysite/
RewriteRule ^/*(.*)$ /mysite/$1 [R,L]

在 site.to.browse 虚拟主机中。后者会将不在 mysite 文件夹下的任何内容重定向到 mysite 文件夹下。

于 2013-09-20T16:47:08.710 回答
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-Name 标识的主机发送请求site.to.browse。这样HTTP_HOST就会192.168.178.57。所以 Apache 不会带你进行 vhost 配置,因为你没有从 host 请求某些东西site.to.browse。相反,将使用 apache 的默认配置,它位于/etc/apache2/sites-available/default.

作为替代方案,您可以将默认的It Works页面替换为您自己的页面,从而使该页面以http://192.168.178.57.

当然你必须确保apache也绑定到机器的公网IP。由于您获得了It works页面,因此我认为这是理所当然的。

于 2013-09-24T09:30:51.727 回答
0

您需要编辑您的虚拟主机或 .htaccess

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^site.to.browse$    index.php    [NC,L]  
于 2013-09-20T12:19:37.897 回答