我启用了通配符子域,并通过将其按原样传递给我的index.php
(例如somecity.domain.com
)来动态解析URL。
现在,我希望创建一些静态的子域,我可以在其中安装不同的应用程序而不与我当前的应用程序混合(例如blog.domain.com
)。
我的.htaccess
目前读取:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我可以操纵这个.htaccess
来实现我的需求吗?可以通过Apache完成吗?
答案 0 :(得分:1)
您的.htaccess没有任何用处,因为Apache可能配置了DirectoryIndex index.php。好吧,它确实将domain.com/a移到了domain.com/index.php,但我怀疑这是你想要的。
您的通配符虚拟主机可以正常工作,因为您的配置中可能有ServerAlias * .domain.com,或者指向服务器地址的单个虚拟主机和DNS。 (当您有一个虚拟主机时,它会显示任何请求,并且第一个列出的虚拟主机是默认主机)
您必须为静态域创建新的VirtualHosts,将默认值保留为默认值:)
答案 1 :(得分:0)
您必须为这些静态子域配置apache。 “catch-all”站点将是配置的默认站点,因此可以捕获其他站点。
答案 2 :(得分:0)
我不确定我完全理解您需要完成的任务,但在Apache配置文件中设置虚拟域可能会有所帮助。您可以将它们映射到驱动器上安装了不同应用程序的文件夹。每个虚拟域都被视为根目录。我在我的Windows机器上本地设置了我的开发环境,就像这样:
NameVirtualHost *:80
# Begin virtual host directives.
<VirtualHost *:80>
# myblog.com virtual host.
ServerAdmin webmaster@myblog.com
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中做所有这些都很麻烦且难以管理。
答案 3 :(得分:0)
我不知道您的主机上是否安装了cPanel,但我可以通过添加新的子域*
然后将所有流量发送到特定子域来实现此目的,例如:{{ 1}}。然后,您可以在master.domain.com中读出您所在的URL,然后从那里开始。