【问题标题】:exclude php files or a whole directory from codeigniter从 codeigniter 中排除 php 文件或整个目录
【发布时间】:2018-05-09 17:10:07
【问题描述】:

我在根目录中有一些 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 主页。那么如何解决这个问题以及如何排除根目录中的任何 php 文件,例如 example.com/test.php

【问题讨论】:

    标签: php .htaccess codeigniter


    【解决方案1】:

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

    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] 将排除站点根目录中的所有.php 文件。

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

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

    【讨论】:

    • 得到内部服务器错误虽然文件只是回显一个单词来测试没有代码产生错误
    • 我已经在我的 Apache 上测试了这个规则,没有错误。如果您得到 500,请检查您的 Apache error.log 文件并在此处发布相关的长行。
    • [Sun Nov 26 06:42:42.166799 2017] [:error] [pid 6596:tid 139984422000384] [client IP_ADDRESS:31585] SoftException in Application.cpp:267: File "/home/USER /public_html/c_code/file.php" 可按组写,referer:example.com/c_code
    • 使用此命令chmod 644 *.php 将您的 php 文件保存在 644 中,但这可能不是 500 错误的原因。
    猜你喜欢
    • 2015-05-24
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多