.htaccess 将除一个页面外的所有页面重定向到子域htaccess

.htaccess 将除一个页面外的所有页面重定向到子域htaccess,.htaccess,redirect,dns,subdomain,.htaccess,Redirect,Dns,Subdomain,我的主域根目录中有一个index.php domain.com/index.php 我把我在同一个“根”里的论坛移到了一个子域 forums.domain.com 我需要重定向除index.php之外的所有内容 我尝试了很多方法,但似乎都不管用 Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{SCRIPT_FILENAME} !index\.php$ RewriteRule ^(.*)$ http://fo

我的主域根目录中有一个index.php

domain.com/index.php

我把我在同一个“根”里的论坛移到了一个子域

forums.domain.com

我需要重定向除index.php之外的所有内容

我尝试了很多方法,但似乎都不管用

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !index\.php$
RewriteRule ^(.*)$ http://forums.domain.com [L,R]

RewriteEngine On
RewriteCond %{HTTP_HOST} animelon\.com [NC]
RewriteCond %{REQUEST_URI} !^index\.php$
RewriteRule ^(.*)$ http://forums.domain.com/$1 [R=301,L]
如果有人有任何想法那就太好了 至于上面的代码,我会用谷歌搜索。
干杯

您可以使用重定向匹配,而不是重写,也就是说,将显示的所有重写块替换为:

RedirectMatch ^(/(?!index\.php).*) http://forums.domain.com$1
您可以在Regexr上看到regex的完整解释。简而言之,它会将所有以
/index.php
开头的URI而不是发送到forums.domain.com


如果您不需要任何其他重写规则,您可以通过从.htaccess中删除所有以“rewrite”开头的行来关闭重写。

Hi,所以只需在RedirectMatch上使用RewriteEngine^(/(!index\.php)。*)就可以了?对不起,我不太擅长这种事情。。。我尝试了上面的方法,但没有成功,我关闭了RewriteEngine(也就是说,
RewriteEngine关闭了
),如果它仍然不能工作,请尝试将第二个指令更改为
RedirectMatch/(?!index.php)(.+) http://forums.domain.com/$1
你能发布一个无法正确重定向的示例吗?animelon.com/threads/speed-test-please-vote.469应该是forums.animelon.com/threads/speed-test-please-vote.469即使第一个可以正常工作,它也应该是一个死页。这就是我需要使用firebug重新执行感谢的原因,我看到它重定向-发送一个HTTP 301头-到
位置/线程/速度测试请投票。469/
:这意味着在这个重定向指令之前可能解析了另一个重定向指令。