指向php文件时,使用.htaccess获取错误500(mod_rewrite)

时间:2012-10-16 10:58:28

标签: apache .htaccess mod-rewrite

我制作了一个简单的.htaccess文件来揭露问题。

我希望对文件夹发出的所有请求都重定向到子文件夹文件“app / index.php”

RewriteEngine On

RewriteRule (.*) app/index.php [QSA]

这可以使用我的主机的基本网址(例如http//myname.hosting.com/htaccessFolder

问题是我有一个指向此文件夹的域,当访问它时,服务器返回Internal Server Error 500

如果我这样做:

RewriteEngine On

RewriteRule (.*) somefile.php [QSA]

重定向仅在文件不存在时才起作用(404未找到错误)。当文件存在时,我也得到500错误。

我暂时没有成功地询问托管支持..

编辑:

奇怪的是,当我写道:

RewriteEngine On

RewriteRule (.*) somefile.txt [QSA]

它适用于机器人,所以似乎问题来自执行php文件..

EDIT2:

这是我尝试使用的真正的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #RewriteCond %{REQUEST_FILENAME} -f 
    #RewriteRule .? - [L]

    #####################

    RewriteRule (.*) app/public/$1

    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule .? - [L]

    RewriteRule app/public/(.*) $1



    #####################

    #RewriteCond %{REQUEST_FILENAME} question2answers/(.+)
    #RewriteRule .? - [L]

    #####################

    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteRule (.*) index.php [L,QSA]

</IfModule>

你可以看到只有公共区块没有被评论,但当我去网站时我得到了这个: 请求的网址/cgi-bin/php5.fcgi/index.php/index.php/index.php/index.php/index.php/index.php/index.php/in .....

但我在公共文件夹中请求一个文件(如http://website.com/css/style.css(在public / css中),它按预期工作。 当我没有评论最后一个块时,我得到500错误。

2 个答案:

答案 0 :(得分:1)

好的,我找到了避免重定向的解决方案:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #####################

    RewriteCond %{QUERY_STRING} stop
    RewriteRule (.*) - [L]

    #####################

    RewriteCond %{REQUEST_URI} question2answers/(.*)
    RewriteRule (.*) $1?htaccess=stop [L,QSA]

    #####################

    RewriteRule (.*) app/public/$1

    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule (.*) $1?htaccess=stop [L]

    RewriteRule app/public/(.*) $1


    #####################


    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) index.php?htaccess=stop [L,QSA]

</IfModule>

我不明白,但它有效。

答案 1 :(得分:0)

尝试添加htaccess文件:

Options -Multiviews

它会关闭内容协商,这有时会影响URL如何映射到扩展名为php的文件。