2013-08-29 3 views
3

Я хочу установить еще один скрипт рядом с Codeigniter на моем сервере. Проблема заключается в том, что Codeigniter по умолчанию содержит .htaccess файл, который получил следующий код, чтобы предотвратить прямой доступ к PHP файлов:Блочный прямой доступ ко всем файлам php, за исключением некоторых из них в codeigniter

# 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> 

ответ

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] 
+0

Что делать, если файлов больше? например, у меня есть 'index2.php', то я должен добавить строку для каждого из них ?! или я могу сделать это, поставив '|' рядом с каждым именем файла ?! – Afshin

+1

Да, вы можете использовать OR conditios, используя '|' следующим образом: 'RewriteCond% {REQUEST_FILENAME}! (Index | index2) \. Php' – anubhava

0

это может помочь - поместить ваши CodeIgniter папки на один уровень вверх, над HTML-файлов. я собираюсь показать это, также переименовывать папки či немного

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

в файлах сайта, сделайте папку, например, «веб-сайт» поместить файл index.php CodeIgniter в нем поместить какой-либо из ваши активы, такие как CSS и JS в нем

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

затем в файле index.php изменить путь к вашей системе и приложениям папке я уже переименовал их, чтобы показать, как легко это сделать различные версии

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

введите базовый url config в index.php - это будет касаться папки веб-сайта и сделает все ваши ссылки правильными.

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

файл Htaccess в папке сайта должна содержать строку

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

Много много преимуществ делать это таким образом. ВКЛЮЧАЯ - не нужно беспокоиться о настройках base_url() для серверов разработки и развертывания.

Я просто просмотрел длинный учебник о том, как динамически установить base_url с большим количеством кода. Но если вы просто установите его в файле index.php - вам никогда не придется беспокоиться об этом - потому что местоположение файла index.php - никогда не меняется!

Смежные вопросы