防止使用 Slim Framework 访问 'index.php'
prevent 'index.php' from being accessible using Slimframework
我正在为我的网络应用程序使用 Slimframework 并且我在我的 .htaccess 中使用以下 ReWrite 将所有 url 请求指向 'index.php' 中的一个入口点:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
一切都很好,但是,index.php
仍然可以通过以下 request/route 在 url 中访问:
/mywebsite/public/index.php
我不想要。现在我知道它是我的 public html 文件夹中的唯一文件,但我不希望它在 url 中访问...我如何通过
1) .htaccess 重写
或
2) 一些苗条的逻辑
???
如果您想禁用对 index.php 的外部访问,请将以下代码置于现有规则之上
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/index\.php\s [NC]
RewriteRule ^ - [F]
如果直接访问 /index.php,这将 return 禁止错误。
您可以像这样更新您的规则:
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
检查。
为了回答您的实际问题,我 return 对任何直接访问 index.php 的尝试都返回 404。另一种选择是重定向到某个地方。
我正在为我的网络应用程序使用 Slimframework 并且我在我的 .htaccess 中使用以下 ReWrite 将所有 url 请求指向 'index.php' 中的一个入口点:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
一切都很好,但是,index.php
仍然可以通过以下 request/route 在 url 中访问:
/mywebsite/public/index.php
我不想要。现在我知道它是我的 public html 文件夹中的唯一文件,但我不希望它在 url 中访问...我如何通过
1) .htaccess 重写
或
2) 一些苗条的逻辑
???
如果您想禁用对 index.php 的外部访问,请将以下代码置于现有规则之上
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/index\.php\s [NC]
RewriteRule ^ - [F]
如果直接访问 /index.php,这将 return 禁止错误。
您可以像这样更新您的规则:
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
检查。
为了回答您的实际问题,我 return 对任何直接访问 index.php 的尝试都返回 404。另一种选择是重定向到某个地方。