2

谁能建议我如何实现以下目标(我无法使用 mod_rewrite 或 virtualdocumentroot 编写解决方案)::

1)允许我网站上的任何子域,(*.mysite.com 不应给出 404 错误)和

2) 确保用户在浏览器中看到的 URL 是他输入的。

3)没有重定向

(因此,如果用户键入 avalidsubdomain.mywebsite.com,则应从相应目录提供页面。此时我不关心我需要保留的目录结构。只要它有效,什么都可以。另一方面,如果他输入了一些不存在的东西.mywebsite.com,他不应该得到 404,而是应该被带到网站上的自定义页面)。

例如,看到 blogspot.com 上的任何子域都可以使用 - 例如http://dsadsadsdsadsd.blogspot.com/。(当然谷歌是谷歌,他们可以编写自己的网络服务器)。但我确信像这样简单的事情可以在 Apache 中完成。

注意:1)我不想每次添加有效子域时都添加/更改 apache 配置或 .htaccess。

2)根据我在各个线程上阅读的内容,我可以将 mod_rewrite 用于一个包罗万象的子域规则,但是,用户在 broser 中看到的 URL 不会保持不变。

谢谢!

干杯,

J.P


我问了一个相关的问题,那里的答案似乎解决了这个问题。在这里提到以防有人看到这个问题:

mod_rewrite 正则表达式(重定向太多)

4

4 回答 4

1

您要设置的场景可以使用Apache httpd的mod_vhost_alias来实现。

您只需要创建一个默认虚拟主机来捕获不存在的子域,有关详细信息,请参阅虚拟主机匹配的深入讨论

例子:

<VirtualHost _default_:80>
  ServerName example.com
  DocumentRoot /srv/www/custom_page
  # ...
</VirtualHost>

UseCanonicalName Off
VirtualDocumentRoot /srv/www/%1/%2+
于 2010-11-01T12:33:25.967 回答
0

在你的 httpd.conf 添加

<VirtualHost *:80>
        ServerName default
        ServerAlias *
        VirtualDocumentRoot /htdocs/%-2.0.%-1/%-3
</VirtualHost>

Wich 会将您在 www.example.com 的域指向 /htdocs/example.com/www/

然后在您的 rooit 文件夹中添加一个 .htaccess 文件:/htdocs/example.com/.htaccess 其中包括: 现在每个不存在的域都将被重定向到 www,状态代码为 301(永久移动)。您可以将 WWW 更改为您想要的任何内容。

# Enable Rewrite Engine
RewriteEngine on

# Rewrite all non-existing sites to www.
RewriteCond %{HTTP_HOST} example\.com$
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]

我希望这能帮到您。

于 2014-01-07T11:55:17.450 回答
0

您所描述的可以使用 DNS 完成,并且您必须使用通配符才能完成。

于 2010-11-01T12:34:48.733 回答
0

物有所值:

我提出了一种使用 mod_rewrite以及VirtualDocumentRoot /.../%0将不存在的子域重定向到相应的根域的方法。这确实会更新客户端 URL,但您可以使用 [P] RewriteRule 标志来隐藏它。如您的示例所示,重定向到占位符页面也很简单。

设置完成后,您无需编辑任何配置设置即可添加或删除域或子域。

于 2012-07-06T08:11:16.927 回答