5

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

4 回答 4

1

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

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

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

检查这些 解释这一切的教程。

于 2008-09-12T16:06:50.450 回答
0

您必须为这些静态子域配置 apache。“catch-all”站点将是配置的默认站点,这样一个站点将捕获另一个站点。

于 2008-09-12T15:53:53.833 回答
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 中完成所有这些操作既麻烦又难以管理。

于 2008-09-12T16:05:40.233 回答
0

我不知道您的主机上是否安装了 cPanel,但我可以通过添加一个新的子域*然后将所有流量发送到特定的子域来做到这一点,例如:*.domain.com -> master.domain.com. 然后,您可以读出您在 master.domain.com 中的哪个 URL 并从那里开始。

于 2008-09-12T19:06:55.990 回答