我有一个长期存在的mod_rewrite和1and1共享主机问题(希望共享主机不会被迁移到“sharedserverfault”)。 关于重写规则的一切工作正常 – 除了当'索引'在path中。 然后我得到一个Apache 404错误。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ /index.php [NC,L]
到目前为止,相当标准,在大多数服务器上运行良 在1and1的服务器上,如果index是顶级的“目录”,我会得到一个404错误。 任何以' http://example.com/index '开头的东西都会给404。
如果我复制index.php到bootstrap.php,并改变.htaccess文件指向那里, 删除 index.php,它将工作。
然而,这使得更新服务器很痛苦 – 任何想法是什么Apache设置造成这种? 显然,我不能改变主configuration文件,但我可以用.htaccess文件覆盖设置。
在这里find答案:
经过一番挖掘,解决scheme是禁用所谓的MultiViews。 MultiViews选项允许一个文件被调用,即使扩展没有被加载,索引也会寻找任何名为index的文件,而不pipe它们的扩展名。
所以解决方法是添加:
Options -MultiViews
到.htaccess文件。
如果你命名一个文件index并把它放在你的根目录下,404,或者加载该文件? 我会尝试覆盖your.htaccess文件中的DirectoryIndex指令。 默认情况下通常是index.html,但也许你只是索引。