.htaccess htaccess重写规则似乎正确,但不起作用

.htaccess htaccess重写规则似乎正确,但不起作用,.htaccess,rewrite,.htaccess,Rewrite,我想将所有指向任何.php文件的流量重定向到index.php。 例如: domain.com/test.php domain.com/test/test.php 。。应该转到domain.com/index.php。同样地: www.domain.com/test.php www.domain.com/test/test.php 。。应访问www.domain.com/index.php。 我添加了以下规则: 重写规则(…com)(/)?/(*.php)$1/index.php 根据在线

我想将所有指向任何.php文件的流量重定向到index.php。 例如:
domain.com/test.php
domain.com/test/test.php
。。应该转到domain.com/index.php。同样地:
www.domain.com/test.php
www.domain.com/test/test.php
。。应访问www.domain.com/index.php。

我添加了以下规则:

重写规则(…com)(/)?/(*.php)$1/index.php

根据在线regex测试人员的说法,这应该会给我正确的结果,但是当我在实际的htaccess上使用它时,规则似乎被忽略了,取而代之的是404错误。

我做错了什么?

重写规则的第一个参数与主机不匹配。请尝试以下操作:

RewriteEngine on

RewriteCond %{REQUEST_URI} index.php$
RewriteCond %{QUERY_STRING} arg=something
RewriteRule \.php$ /index.php? [R]

RewriteCond %{REQUEST_URI} !index\.php$
RewriteRule \.php$ /index.php? [R]
希望对您有所帮助。

请尝试以下代码:

Options +FollowSymlinks -MultiViews
RewriteEngine on

# internally redirect all .php files to index.php
RewriteCond %{REQUEST_URI} !^/+index\.php [NC]
RewriteRule \.php$ /index.php? [L,NC]

# remove all query string from /index.php
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^index\.php$ /index.php? [L,R]

感谢您的帮助,但不幸的是,它仍然不起作用,它只是出现了404错误,而没有重定向到index.php。您知道为什么会出现这种情况吗?或者如果我应该采取任何其他方法?index.php文件是否执行任何类型的重定向,或者在
.htaccess
中是否有其他规则?规则应该有效,您是否有权访问主apache配置以打开
重写日志
,否则您是否已确认启用了
mod_rewrite
?此外,我还添加了一个避免昨晚忘记的重定向循环的条件,以及一个检查
index.php
上的querystring参数的规则。此外,规则的尾部
将删除querystring,如果您希望通过重定向来维护它们,只需删除
Hi感谢您的建议,但同样不幸的是,它只返回404错误,而不是实际重写url以转到index.php。你知道为什么会这样吗?我还有一堆spambot块和IP块,它们也不工作。他们有关系吗?很可能是这样的。我建议你查看一下你的access.log,看看你得到了什么,为什么要加载这个URL。你还会从我上面的答案中复制/粘贴代码吗。我做了一个小编辑。嗨,阿努巴瓦,再次感谢你的建议。页面仍然返回404错误。这个mod的原因是因为我们的网站最近被黑客攻击,我正试图将404个请求重定向到以前的垃圾邮件php文件index.php。我还想做一些事情,例如/index.php?arg=something,也返回index.php,但我不知道如何做。非常感谢你的帮助。很抱歉反应太晚,因为已经很晚了,我不得不去睡觉了。我刚刚编辑了上面的答案,按照您的要求放弃/index.php中的所有查询字符串。