通配符子域异常

时间:2020-03-05 18:52:20  来源:igfitidea点击:

我启用了一个通配符子域,并通过将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,然后从那里开始。