通配符子域例外

时间:2008-09-12 15:50:38

标签: php apache .htaccess wildcard-subdomain

我启用了通配符子域,并通过将其按原样传递给我的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完成吗?

4 个答案:

答案 0 :(得分:1)

您的.htaccess没有任何用处,因为Apache可能配置了DirectoryIndex index.php。好吧,它确实将domain.com/a移到了domain.com/index.php,但我怀疑这是你想要的。

您的通配符虚拟主机可以正常工作,因为您的配置中可能有ServerAlias * .domain.com,或者指向服务器地址的单个虚拟主机和DNS。 (当您有一个虚拟主机时,它会显示任何请求,并且第一个列出的虚拟主机是默认主机)

您必须为静态域创建新的VirtualHosts,将默认值保留为默认值:)

检查these tutorials,解释一切。

答案 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,然后从那里开始。