0

問題を明らかにするために、単純な .htaccess ファイルを作成しました。

フォルダーに対して行われたすべてのリクエストがサブフォルダーファイル「app/index.php」にリダイレクトされるようにしたい

RewriteEngine On

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

そして、これは私のホスティング事業者の基本的な URL で問題なく動作します (http//myname.hosting.com/htaccessFolder

問題は、このフォルダーを指しているドメインがあり、それにアクセスするとサーバーが返されることInternal Server Error 500です。

私がこれを行う場合:

RewriteEngine On

RewriteRule (.*) somefile.php [QSA]

リダイレクトは、ファイルが存在しない場合 (404 not found エラーが発生した場合) にのみ機能します。ファイルが存在する場合、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>

public ブロックだけがコメントされていないことがわかりますが、ウェブサイトにアクセスすると、次のようになります。要求された 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 に答える