我对 mod_rewrite 和 1and1 共享主机有一个长期存在的问题(希望共享主机不会将其迁移到“sharedserverfault”)。有关重写规则的一切工作正常 - 除非“索引”在路径中。然后我得到一个 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。
- http://example.com/index
- http://example.com/index/action
- http://example.com/index/what/ever.anything
如果我将 index.php 复制到 bootstrap.php 并将 .htaccess 文件更改为指向那里并删除index.php,它将起作用。
但是,这使得更新服务器变得很痛苦 - 任何想法是什么 apache 设置导致了这种情况?显然我无法更改主配置文件,但我可以使用 .htaccess 文件覆盖设置。
在这里找到答案:
所以解决方案是添加:
到 .htaccess 文件。
如果您命名一个文件
index
并将其放在您的根目录中,它是 404 还是加载该文件?我会尝试覆盖DirectoryIndex
your.htaccess 文件中的指令。默认的通常是 index.html,但也许你的只是 index.html。