3

Codeigniter我想在我的服务器旁边安装另一个脚本。问题是 Codeigniter 默认包含一个.htaccess文件,该文件具有以下代码以防止直接访问 php 文件:

# Hide all PHP files so none can be accessed by HTTP
RewriteRule (.*)\.php$ index.php/$1

我怎样才能在这段代码中添加一些例外?!如果我的 PHP 文件位于所在文件夹之外的另一个文件夹中.htaccess,我应该如何例外?!

我的整个代码如下所示:

# set it to +Indexes
Options -Indexes

Options SymLinksIfOwnerMatch

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>
    # mod_rewrite rules
    RewriteEngine on

    # If the file is NOT the index.php file
    RewriteCond %{REQUEST_FILENAME} !index.php
    # Hide all PHP files so none can be accessed by HTTP
    RewriteRule (.*)\.php$ index.php/$1

    # If the file/dir is NOT real go to index
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]

</IfModule>

# If Mod_ewrite is NOT installed go to index.php
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>
4

2 回答 2

2

添加另一个排除条件,如下所示:

# If the request is not from /some-folder/
RewriteCond %{REQUEST_URI} !^/some-folder/ [NC]
# If the file is NOT the index.php file
RewriteCond %{REQUEST_FILENAME} !index.php
# Hide all PHP files so none can be accessed by HTTP
RewriteRule ^(.*)\.php$ index.php/$1 [L,NC]
于 2013-08-29T14:22:51.953 回答
0

这可能会有所帮助 - 将您的 codeigniter 文件夹放在 html 文件上方的上一级。我将通过稍微重命名 ci 文件夹来展示这一点

 /               /html/site files are here
/applicationbeta/html/
/systemci2      /html/ 

在站点文件中,创建一个文件夹,例如“网站”,将您的 codeigniter index.php 文件放入其中,将您的任何资产(如 css 和 js)放入其中

              /html/website/index.php 
              /html/website/assets/

然后在您的 index.php 文件中更改系统和应用程序文件夹的路径,我已重命名它们以显示制作不同版本是多么容易

$system_path = '../../systemci2'; 
$application_folder = '../../applicationbeta';  

在 index.php 中放置一个基本 url 配置 - 这将处理网站文件夹并使您的所有链接正确。

$assign_to_config['base_url'] = 'http://domain.com/website/';

文件夹网站中的 htaccess 文件应包含如下行

RewriteRule ^(.*)$ /website/index.php/$1 [L]

这样做有很多好处。包括——不必担心开发服务器与部署服务器的 base_url() 设置。

我刚刚浏览了一篇关于如何使用大量代码动态设置 base_url 的长教程。但是如果你只是在 index.php 文件中设置它——你永远不必担心它——因为 index.php 文件的位置——永远不会改变!

于 2013-08-30T02:07:28.410 回答