godaddy .htaccess RewriteRule

时间:2011-12-28 10:41:13

标签: apache .htaccess mod-rewrite

我正在尝试在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似乎遇到了这个问题: ^。* $ 任何帮助都会受到赞赏。

1 个答案:

答案 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]