任何人都可以建议我如何实现以下目标(我无法使用mod_rewrite或virtualdocumentroot烹饪解决方案)::
1)允许我网站上的任何子域名(* .mysite.com不应该给出404错误)和
2)确保用户在浏览器中看到的URL是他输入的内容。
3)没有重定向
(因此,如果用户输入avalidsubdomain.mywebsite.com,页面应该从相应的目录中提供。此时我并不关心我需要保留的目录结构。只要它有效,任何事情都可以。另一方面,如果他输入了一些关于doesnotexist.mywebsite.com的内容,他就不应该获得404,而应该被带到网站上的自定义页面。)
例如,请参阅blogspot.com上的任何子域都可以正常工作 - 例如http://dsadsadsdsadsd.blogspot.com/。 (当然谷歌是谷歌,他们可以编写自己的网络服务器)。但我确信在Apache中可以做到这么简单。
注意: 1)每次添加有效的子域时,我都不想添加/更改apache配置或.htaccess。
2)从我在各种线程上看到的内容,我可以将mod_rewrite用于一个catchall子域规则,但是,用户在broser中看到的URL不会保持不变。
谢谢!
欢呼声,
JP
我问了一个相关的问题,那里的答案似乎解决了这个问题。 如果有人看到这个问题,请在此处提及:
答案 0 :(得分:1)
您想要设置的方案可以使用{http {3}}来实现Apache httpd。
您只需要创建一个默认虚拟主机来捕获不存在的子域,有关详细信息,请参阅mod_vhost_alias。
示例:
<VirtualHost _default_:80>
ServerName example.com
DocumentRoot /srv/www/custom_page
# ...
</VirtualHost>
UseCanonicalName Off
VirtualDocumentRoot /srv/www/%1/%2+
答案 1 :(得分:0)
您所描述的内容可以通过DNS完成,您必须使用wildcards将其删除。
答案 2 :(得分:0)
它的价值:
我已经an approach that uses mod_rewrite和VirtualDocumentRoot /.../%0
一起将不存在的子域重定向到相应的根域。这会更新客户端URL,但您可以使用[P] RewriteRule标志来隐藏它。如示例中那样重定向到占位符页面也是微不足道的。
设置完成后,您无需编辑任何配置设置即可添加或删除域或子域。
答案 3 :(得分:0)
添加
<VirtualHost *:80>
ServerName default
ServerAlias *
VirtualDocumentRoot /htdocs/%-2.0.%-1/%-3
</VirtualHost>
请将您的域名指向www.example.com /htdocs/example.com/www /
然后在你的rooit文件夹中添加一个.htaccess文件: /htdocs/example.com/.htaccess包括: 现在,每个不存在的域都将重定向到www,状态代码为301(Permantly Moved)。您可以将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]
我希望这会对你有所帮助。