如果使用 htacess 在 URL 中未指定文件/目录,则重定向域


Redirect domain if no file/directory specified in URL using htacess

我有一个子域 images.example.com,顾名思义,它将图像传送到 example.com 上的所有其他子域。

目前,我已经设置了虚拟主机以应用来自父域的所有自定义错误文档,如下所示:

ErrorDocument 400 http://www.example.com/errors/400/
ErrorDocument 401 http://www.example.com/errors/401/
ErrorDocument 403 http://www.example.com/errors/403/
ErrorDocument 404 http://www.example.com/errors/404/
ErrorDocument 500 http://www.example.com/errors/500/
ErrorDocument 405 http://www.example.com/errors/405/
// And so on...

但是,我想做的是重定向访问者,如果他们没有指定任何文件或目录。换句话说,如果他们转到 images.example.com,他们将被重定向到 www.example.com。

例:

images.example.com 将重定向到 www.example.com

images.example.com/directory/不会重定向

我只想重定向第一页的原因很简单,因为如果您不指定文档/目录,它会显示默认的 Apache 服务器测试页面,而不是显示错误页面。

那么,简而言之,当URL中未指定文件/目录时,如何重定向域?

或者,如何防止在未指定文件/目录时显示默认的 Apache 服务器测试页面?

最后的手段

如果我无法使用我的 .htaccess 实现这一点,那么我只会将一个 php 页面添加到根目录或图像子域,然后从那里重定向......

更多信息

我在其他地方读到,通过指定 403 错误文档,将不会显示 Apache 服务器测试页面。好吧,这不起作用,因为我已经指定了错误,但我仍然看到测试页面......

一行一行,我们有:

  1. 打开重写引擎
  2. 请求是否为不存在的文件
  3. 请求是否为不存在的目录
  4. 如果是这样,则重定向到 www.example.com,这是最后一条规则。

    重写引擎打开
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    重写规则 ^(.*)$ http://www.example.com [L]

附言如果 images.example.com/directory/不会重定向,因为它存在,那么 images.example.com 也不会。

我建议创建一个索引.php并执行以下操作:

header("Location:http://www.example.com");
exit();