2017-04-17 26 views
0

こんにちは私は、すべての請願をwrapper.phpファイルで渡すためにhtaccessファイルを作成しました。.htaccessはサブフォルダをリダイレクトしません

は、ここでは、コードです:

Options +FollowSymLinks 

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /wrapper.php?PATH_INFO=$1 [NC,L,QSA] 
</IfModule> 

マイフォルダ構造はこの1つである:

* root 
    * .htaccess file 
    * my-folder 
    * admin 
     * recover.php 

は私が(XAMPPを使用して)ローカルホストにすべてのものを試してみましたが、完璧に動作します。しかし、問題は、私は自分のサイトのコンテンツをホスティングにアップロードしても動作しないことです。

私はhttp://example.comにアクセスする場合、私が説明しましょうかhttp://example.com/admin/私のラッパーが正しくパラメータを受け取り、それを処理することができますが、私はhttp://example.com/admin/recover/にアクセスするときに、例えば、recover.phpと呼ばれる/管理/内部のファイルがありますし、ラッパーは何も処理していません。私はそれがRewriteCond %{REQUEST_FILENAME} !-fで何かだと思います。しかし、私の質問は、localhostのすべてが最初にwrapper.phpを通過するのですが、私のホスティングでは、これが存在する場合、まずファイル(この場合recover.php)を呼び出します。

編集:

私は/管理/回復/

-password.phpを回復そして今、正常に動作含めて、呼び出されたときに、ラッパーを変更しようとしましたので、代わりのrecover.phpファイルを含めますしかし、実際のファイルではなく、なぜラッパーが最初に呼び出されたのかをローカルホストで理解しないでください。

私はそれが管理/

感謝/内のすべてのファイルの名前を変更せずに動作するようにしたいです。

+0

あなたはあなたのウェブホストが.htaccessファイルを許可することを確認していますか?あなたのウェブホストから.htaccessを削除すると、それは同じように動作しますか? – kojow7

+0

http://example.comまたはhttp://example.com/admin/にアクセスすると.htaccessファイルが正常に動作します。だから私は私のウェブホストが.htaccessファイルを許可すると思います。 @ kojow7 – seergiue

+0

あなたが設定した唯一の書き換えルールですか? example.com/blahblahblahに行くと、あなたはwrapper.phpにリダイレクトされますか? – kojow7

答えて

1

これはリモートホストがMultiViewsオプションを有効にする問題であるようです。あなたの.htaccessの上部にこの行はMultiViewsをオフにする

場所:

Options -MultiViews 
+0

に接続しようとすると、これを確認できます。ちょうど理解するために、何が問題でしたか? – seergiue

+1

'MultiViews'はURIを対応する一致するファイル名に一致させ、URIを'/file'として '/ file.php'にします。これは 'mod_rewrite'モジュールの前で起こりますので、' RewriteCond%{REQUEST_FILENAME}!-f'の状態は失敗します。 – anubhava

関連する問題