我在根目录中有一些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的问题)