2015-11-27 2 views
3

Я попытался разместить сайт CodeIgniter на сервере Ubuntu..htaccess не работает - CodeIgniter

Все остальные веб-сайты работают нормально без каких-либо проблем (раздел содержит приложения WordPress и Laravel). Но этот конкретный веб-сайт CodeIngniter не принимает файл .htaccess. Я потратил день, чтобы разобраться с проблемой, но не повезло.

Вот подробности.

Сайт Структура URL: http://example.com/website_name

файл .htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond $1 !^(index\.php|resources|robots\.txt) 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

Виртуальный хост вход

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias example.com 
    DocumentRoot "/var/www/example.com" 
    <Directory "/var/wwww/example.com"> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride ALL 
      Order allow,deny 
      allow from all 
    </Directory> 
</VirtualHost> 

CodeIgniter конфигурационный файл

$config['base_url'] = 'http://example.com/website_name/'; 
$config['index_page'] = ''; 
$config['uri_protocol'] = 'REQUEST_URI'; 

И когда я пытаюсь получить доступ к веб-сайт выход заключается в следующем,

Not Found 
The requested URL /website_name/test was not found on this server. 

Но если добавить index.php, то веб-сайт работает без каких-либо проблем. Я пробовал много методов, и это не сработало.

ответ

0

Наконец, я выяснил проблему, проведя целый день. Вот решение.

Обновлена ​​запись виртуального хоста.

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /var/www/example.com/ 

    # Additional section added to get the htaccess working in sub folder. 
    Alias /website_name/ /var/www/example.com/website_name/ 
    <Directory /var/www/example.com/website_name/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride all 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 
1

попробовать это .htaccess

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options -Indexes 
    RewriteEngine On 
    RewriteBase /website_name/ 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteCond $1 !^(index\.php) 
    RewriteRule ^(.*)$ index.php [L] 

</IfModule> 
+0

Пробовал это и не работал. – Nikhil

+0

RewriteBase/имя_сайта/ – AldoZumaran

+0

Поместить файл htaccess в папку сайта_name – AldoZumaran

1

Добавить в ваш .htaccess

RewriteBase /website_name/

после RewriteEngine on

+0

Я уже пробовал это, и он не сработал. – Nikhil

+0

Вы можете проверить свой error_log и access_log вашего apache для этого домена? – sotoz

+0

tail -f /var/log/apache2/error.log вернуть ничего, что связано с этим сайтом. – Nikhil

0

Попробуйте изменить ваш .htaccess как это.

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/system.* 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?/$1 [L] 

Или это

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
0

не окончательный ответ, но хороший способ проверить, если .htaccess работает на любом уровне.

Создайте этот файл .htaccess и поместить в корневой каталог

RewriteEngine On 
Options +FollowSymLinks 
RewriteRule ^test\.html http://www.google.com/? [R=301,L] 

Затем направить браузер

http://example.com/test.html 

Если вы в конечном итоге на Google, то вы знаете, .htaccess работает.

Полезный способ для отладки .htaccess - использовать функцию регистрации. Добавить это в конфигурацию ВХост в:

RewriteLog "/tmp/rewrite.log" 
RewriteLogLevel 9 

Вы, вероятно, нужно перезапустить Apache, чтобы получить каротаж начал.

1

У меня чувство MultiViews, вероятно, вызывает некоторые проблемы.

Изменить это в ВХост

Options Indexes FollowSymLinks MultiViews 

к этому

Options Indexes FollowSymLinks 

А также, вероятно, добавить RewriteBase в .htaccess Перепишите

RewriteBase /website_name/ 

Перезапустите Apache для конфигурации изменения

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