Apache mod_在一个环境中将全部重写为index.php

Apache mod_在一个环境中将全部重写为index.php,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我知道关于这个问题有很多问题,但我在其他问题上尝试过解决方法,但在我的案例中没有成功。我正在尝试将所有内容重定向到index.php: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> 重新启动发动

我知道关于这个问题有很多问题,但我在其他问题上尝试过解决方法,但在我的案例中没有成功。我正在尝试将所有内容重定向到index.php:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [L]
</IfModule>

重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
这在我的本地环境中是可行的,但在我的登台环境中它失败了,我得到了一个404错误。我已检查是否已使用phpinfo()启用mod_rewrite。我尝试过改变一些东西,比如使用^(.*)$代替^,使用/index.php代替index.php


还有什么问题吗?

解决了。这是apache配置的一个问题。无论是谁为我正在工作的站点设置的,都是在站点的.conf文件中这样做的:

<Directory "/data/path/to/directory">
  Options FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all

  # and a bunch of rewrite rules...
</Directory>

选项如下符号链接
不允许超限
命令允许,拒绝
通融
#还有一堆重写规则。。。
AllowOverride None
禁止使用.htaccess。在我们的本地和开发环境中,目录结构是不同的,所以这段代码甚至没有得到应用。这就是.htaccess工作的原因

要解决这个问题,我必须将上面提到的行更改为
AllowOverride All
,或者为我正在处理的网站添加另一个配置,就像上面的配置一样,它完成了我想用.htaccess执行的操作


如果任何人的环境配置正确,就不会出现类似的问题,但是如果任何人遇到类似情况,请检查apache中站点的配置

通过将相同的垃圾(随机)文本放在
.htaccess
上,验证您的
.htaccess
是否已启用,并查看当您在浏览器中访问页面时,它是否会生成500(内部服务器)错误?嗯,原来它没有使用.htaccess。我没有得到500的错误。奇怪的是,我在同一台服务器上有一个drupal站点,我尝试将垃圾添加到它的htaccess中,但也没有收到500个错误。在我当地的环境中,我是这样做的。我甚至尝试过删除.htaccess,但它仍然可以在我的drupal站点上运行。这让我想知道.htaccess是否被缓存了?