通配符子域异常
我启用了一个通配符子域,并通过将URL原样传递到我的index.php
(例如somesome.domain.com)来动态解析URL。
现在,我希望创建一些静态的子域,可以在其中安装其他应用程序,而不必与当前应用程序(例如,blog.domain.com)混合在一起。
我的.htaccess
当前显示为:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
我可以操纵这个.htaccess
来实现我所需要的吗?可以通过Apache完成吗?
解决方案
回答
我们必须为这些静态子域配置apache。 "全部捕获"站点是配置的默认站点,因此一个站点将捕获其他站点。
回答
我不确定我是否完全了解我们需要完成什么,但是在Apache配置文件中设置虚拟域可能会有所帮助。我们可以将它们映射到安装了不同应用程序的驱动器上的文件夹。每个虚拟域都被视为一个根目录。我在Windows计算机上本地设置了开发环境,如下所示:
NameVirtualHost *:80 # Begin virtual host directives. <VirtualHost *:80> # myblog.com virtual host. ServerAdmin [email protected] DocumentRoot "c:/apache_www/myblog.com/www" ServerName myblog.com ServerAlias *.myblog.com ErrorLog "c:/apache_www/myblog.com/logs/log" ScriptAlias /cgi-bin/ "c:/apache_www/myblog.com/cgi-bin/" <Directory "c:/apache_www/myblog.com/www"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
如果这不能走上正确的道路,请尝试研究VirtualHost指令以提出解决方案。我发现尝试在.htaccess中执行所有这些操作比较麻烦且难以管理。
回答
.htaccess没有任何用处,因为Apache可能已配置了DirectoryIndex index.php。好吧,它确实将domain.com/a移到domain.com/index.php,但是我怀疑那是我们想要的。
通配符虚拟主机之所以起作用,是因为配置中可能包含ServerAlias * .domain.com,或者单个虚拟主机和指向服务器地址的DNS。 (当我们有一个虚拟主机时,它会显示任何请求,并且第一个列出的虚拟主机是默认的)
我们必须为静态域创建新的VirtualHosts,而将默认的虚拟主机保留为默认的:)
查看这些说明所有内容的教程。
回答
我不知道主机上是否安装了cPanel,但是我可以通过添加新的子域*
,然后将所有流量发送到特定的子域来做到这一点,例如:* .domain.com- > master.domain.com
。然后,我们可以在master.domain.com中读出我们所在的URL,然后从那里开始。