从CodeIgniter中排除PHP文件或整个目录



我在根目录中有一些php文件,一个目录中包含一些我想从CodeIgniter中排除的PHP文件。我在htaccess文件中有此代码

RewriteCond %{REQUEST_URI} !^subdomain_name. [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/[0-9]+..+.cpaneldcv$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(directory_to_exclude)$
RewriteCond %{REQUEST_URI} !^/[0-9]+..+.cpaneldcv$
RewriteRule ^(.*)$ index.php/$1 [L]  

当我导航到example.com/directory_to_exclude时,我会获取PHP文件的列表(我会添加一个索引来防止列表),但是当我尝试运行任何一个时,它会重新加载CodeIgniter主页。因此

将您的最后一个规则更改为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} !s/+[^/.]+.php[?s/] [NC]
RewriteCond %{THE_REQUEST} !s/+directory_to_exclude/ [NC]
RewriteCond %{THE_REQUEST} !s/+[0-9]+..+.cpaneldcv [NC]
RewriteRule ^(.*)$ index.php/$1 [L]  

RewriteCond %{THE_REQUEST} !s/+[^/.]+.php[?s/] [NC]将排除网站root目录中的所有.php文件。

您使用THE_REQUEST而不是REQUEST_URI,因为执行某些重写规则后,它不会被覆盖。

编辑:如果此不起作用,请将文件权限更改为644。(这实际上解决了OP的问题)

最新更新