我知道有一百万个关于此问题的问题,但我已经在其他问题中尝试了这些解决方案,并且无法在我的案例中使用它。我试图将所有内容重定向到index.php:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
这适用于我的本地环境,但在我的暂存环境中它失败了,我收到404错误。我已经检查过使用phpinfo()启用了mod_rewrite。我尝试过改变一些事情,例如使用^(。*)$而不是^并使用/index.php而不是index.php
还有什么问题?
答案 0 :(得分:0)
想出来。这是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中网站的配置!