我正在尝试在Godaddy虚拟主机(apache-linux ofcourse,而不是IIS)上设置.htacess文件。但我遇到了一个问题:
RewriteEngine On
Options +FollowSymLinks
Rewriterule ^templates/.*$ - [PT]
Rewriterule ^controllers/.*$ - [PT]
Rewriterule ^.*$ index.php [NC,L]
我收到一行内部服务器错误:
Rewriterule ^。* $ index.php [NC,L]
我不知道如何解决这个问题,我已经尝试了所有我知道的...基本上我想发送任何指向index.php的地方,其中设置了一个bootstrapper。这适用于我曾经尝试过的任何托管,但是godaddy似乎遇到了这个问题: ^。* $ 任何帮助都会受到赞赏。
答案 0 :(得分:0)
此规则
Rewriterule ^。* $ index.php [NC,L]
看起来不错,但要确保标志之间没有空格
即[NC, L]
应更改为[NC,L]
。
您可以尝试使用等效文件来查看它是否有所不同(您不需要 NC ,因为它已匹配任何请求)
Rewriterule .* index.php [L]
如果这不是问题,那么之前的规则很可能导致它失败。注释它们并查看它是否有效,但添加RewriteCond如下所示
Options +FollowSymLinks
RewriteEngine On
#if its not already index.php
RewriteCond %{REQUEST_URI} !index\.php$ [NC]
Rewriterule .* index.php [L]
如果这些规则是真正的原因,那么我想知道你对这些规则的意图是什么,并且它们可以用不同的方式表达,即如果意图是重写除模板或控制器目录之外的所有内容,那可以通过
来实现#if request is not for templates or controllers directory
RewriteCond %{REQUEST_URI} !^/(templates|controllers)/ [NC]
Rewriterule .* index.php [L]