問題を明らかにするために、単純な .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エラー。