如何使用.htaccess文件限制PHP文件访问?
这是我的.htaccess文件如何使用.htaccess文件限制PHP文件访问?,php,.htaccess,Php,.htaccess,这是我的.htaccess文件 Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?r=$1 [QSA,L] 我的基本文件夹包含一个“index.php”文件和一个“app”文件夹,app文件夹包含一些php文件,我不想使用浏览器直接访问app文件夹中的这些php文件。根据
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?r=$1 [QSA,L]
我的基本文件夹包含一个“index.php”文件和一个“app”文件夹,app文件夹包含一些php文件,我不想使用浏览器直接访问app文件夹中的这些php文件。根据对您问题的评论,您的要求实际上比您在问题中所写的要复杂一些 我想这就是你真正想要的:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^(.*)$ index.php?r=$1 [QSA,L]
当请求中的文件名以
.php
文件扩展名结尾时,这将把请求重写为index.php
规则本身看起来不错,但为什么会有这些条件呢?它们实际上允许访问其他php文件!如果我删除了这些条件,那么我的应用程序文件夹中的css和js就不会加载到浏览器中,因此您有更复杂的需求。然后你需要更具体的条件,只阻止访问php文件,而不是像你编码的那样访问所有现有文件。好吧,它对我有效,我还有另一个问题,当我访问app文件夹中的某个文件时,css和js文件的位置相对于该文件而不是index.php发生改变。所以它显示的页面没有css和js。如何解决它?如果总是调用同一个脚本(index.php),我看不出这怎么可能发生。从那里到资产的路径是静态的、清晰的和定义的。我看不出有什么问题。您可以开始在对资产的引用中使用绝对路径,但这是一种糟糕的样式,因为它会降低代码的可移植性。此代码是否适用于所有子文件夹?。也就是说,如果对子文件夹中的任何php文件发出的请求将重定向到index.php文件,它将适用于放置和解释此.htaccess
样式文件的子文件夹中的所有子文件夹,因为它不关心文件夹。它只检查请求的路径是否以文件扩展名.php
结尾。请不要误会:我的印象是您并不真正理解这些东西是如何工作的。但是,如果你使用你不理解和依赖的东西,那是非常危险的。我建议您开始阅读apaches重写模块的文档,了解实际工作原理: