0

我制作了一个简单的 .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 文件..

编辑2:

这是我尝试使用的真实 .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>

你可以看到只有公共块没有被评论但是当我去网站时我得到这个:请求的 URL /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 错误。

4

2 回答 2

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>

我不明白所有,但它的工作原理。

于 2012-10-19T10:26:20.273 回答
0

尝试在您的 htaccess 文件中添加:

Options -Multiviews

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

于 2012-10-16T21:39:11.047 回答