2017-02-11 122 views
2

我为我的web应用使用Slimframework &我的所有url请求都指向'index.php'中的一个入口点,在我的.htaccess中使用以下ReWrite:阻止'index.php'被slimframework访问

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

一切都很好,但是,index.php仍是由下面的请求/路由方式的URL访问: /mywebsite/public/index.php,我不想要的。现在我明白了,它在我的公共文件夹的HTML唯一的文件,但我不希望它在URL访问...我怎样才能重定向到一个错误的路线通过

1)一个.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检查。

若要回答你的实际问题,我会直接返回一个404以尝试访问index.php。另一种选择是重定向到某个东西。

+0

我将如何重定向到一个特定的路线?而不仅仅是一个404禁止页面,即:RewriteRule^- www.mysite.com/error/errors –

+0

您可以使用'ErrorDocument 404/error/errors',这样就可以作为错误页面。或者我可以更新代码重定向到那个。让我知道。 – SuperDuperApps

+0

很好,谢谢队友:} –

2

如果您希望禁用的index.php外部访问,将上述现有的规则

RewriteEngine on 

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

这下面的代码将返回Forbidden错误,如果的index.php是直接访问。

+0

这是伟大的,但不是返回一个禁止的错误,我怎么能重定向到一个特定的路线?即:RewriteRule^- www.mysite.com/error/errors –