将所有请求重定向到 index.php,子域除外

Redirect all requests to index.php except subdomains

我正在使用 AltoRouter:(http://altorouter.com/) 并且我按照安装中的建议将 .htaccess 修改为:

重写引擎开启
RewriteCond %{REQUEST_FILENAME} !-f
重写规则。 index.php[大号]

这样 index.php 就可以处理所有请求。我的问题是我在 cpanel 中使用插件域,当我尝试访问与插件域关联的域之一时出现内部服务器错误。

示例: 我的主域是 mainsite.com.

然后我有几个站点:

site1.com cpanel 自动与 site1.mainsite.com 关联并创建文件夹 mainsite.com/site1.com。因此,如果我访问 site1.com,我会在浏览器中看到 site1.com,但交付的内容将是 mainsite.com/site.com 文件夹中的内容。

如果我不使用 .htaccess 规则但我需要它进行路由,这会起作用。如果我有那个规则,每次访问 site1.com 时都会出现内部服务器错误(我假设这是 cpanel 规则和 .htaccess 之间的冲突)。

如何修改规则以使其只影响主域而不影响子域?我假设这样做不会有冲突,我的问题也会得到解决。

我真的不擅长 .htaccess 和正则表达式,但如果需要我愿意学习。如果您能指出正确的方向,我将不胜感激。 (无论是在想法上还是在可以帮助我理解这一点的好网站上)

How can I modify the rule so that it only affects maindomain and not subdomains?

您可以根据主机名添加新条件:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(?:www\.)?mainsite\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]