2017-02-11 1 views
2

私のウェブアプリケーションにSlimframeworkを使用しています&私のすべてのurlリクエストは、.htaccessで次のReWriteを使って 'index.php'Slimframeworkを使用して 'index.php'にアクセスできないようにする

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [QSA,L] 

すべてが大丈夫です、しかし、index.phpは次のリクエスト/ルートを経由して、まだURLでアクセスできます /mywebsite/public/index.php私は望んでいないいます。今、私はその唯一の私のパブリックのhtmlフォルダ内のファイルが、私は、URLでそれにアクセスしたくないことを理解して...どのように私はリダイレクトすることができ、その誤ったルートに.htaccessの書き換え) 経由

それとも

2)一部のスリムなロジック

???

答えて

2

あなたはそうのようなあなたのルールを更新することができます:

RewriteEngine on 
# Rewrite to index.php 
RewriteCond %{REQUEST_URI} !=/index.php 
RewriteRule^index.php [L,E=rewritten:1] 
# 404 any direct access of index.php 
RewriteCond %{ENV:rewritten} !=1 
RewriteCond %{ENV:REDIRECT_rewritten} !=1 
RewriteRule ^index\.php$ - [R=404,L] 

私は必要とされなかったQSAフラグを削除。ファイルとディレクトリのチェックを削除しましたが、これは不要で、index.phpのチェックに置き換えました。

実際の質問に答えるために、私はindex.phpに直接アクセスしようとすると404を返します。もう1つの方法は、何かにリダイレクトすることです。

+0

どのように特定のルートにリダイレクトしますか? RewriteRule^- www.mysite.com/error/errors –

+0

エラーページとして機能するように、 'ErrorDocument 404/error/errors'を使うことができます。あるいは、私はそれにリダイレクトするコードを更新することができます。お知らせ下さい。 – SuperDuperApps

+0

すばらしい、ありがとう。 –

2

あなたがindex.phpに外部からのアクセスを無効にしたい場合は、/index.phpにアクセスし、直接である場合、これは禁断のエラーが返されます、既存のルール

RewriteEngine on 

RewriteCond %{THE_REQUEST} \s/index\.php\s [NC] 
RewriteRule^- [F] 

の上に以下のコードを配置します。

+0

これは素晴らしいですが、禁止されたエラーを返すのではなく、これを特定のルートにどのようにリダイレクトできますか?すなわち:RewriteRule^- www.mysite.com/error/errors –

関連する問題