2017-01-02 1 views
0

domain.comに戻るすべてのトラフィックをdomain.comにリダイレクトする.htaccess書き換えルールを書き込もうとしています。全体のフォルダへのアクセスをブロックし、代わりにindex.phpにルーティング

私はこれまでのところ、これを書いている:

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1/ [L] 

しかし、私が行けば、期待どおりに動作していない:

domain.com/system/inexistent_file 

それが動作します。しかし私が行く場合:

domain.com/system/existing_file.php 

これは、index.phpの内容を表示するのではなく、指定されたファイルを開きます。

これはどのように修正する必要がありますか?

Options +FollowSymLinks 

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    # Match against the host, if you wish 
    #RewriteCond %{HTTP_HOST} ^domain\.com$ 

    RewriteRule system/(.*) /index.php?/$1 [L,R] 
</IfModule> 

それが存在し、存在しないファイルの両方で動作します:

答えて

0

はこれを試してみてください。

[R] flagは、あなたがリダイレクトするように指定したためです。

+0

それはトリックでしたが、RewriteCondがうまくいかなかったのはなぜですか? –

+0

まず、 'RewriteRule'自体が'%{REQUEST_URI} 'とマッチするので、余分な' RewriteCond'は必要ありません。次に、すべてのもの( '。*')を 'system /'の後のセグメントではなくindex.phpファイルにマッピングしていました。 – sepehr

+0

もうひとつ注意してください。おそらくhtaccessファイルに 'RewriteCond%{REQUEST_FILENAME}!-f'の行に沿って何かがあるでしょう。右? – sepehr

関連する問題