Файл .htaccess не работает в LAMP

0

Это мой файл.htaccess. Для моего проекта я использую Codeigniter Framework.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /project_name/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Где моя ошибка здесь? Но это работает в xampp.

  • 0
    Вы имеете в виду, что код не работает? или это дает вам 500 ошибок?
  • 0
    Отображение этого сообщения об ошибке при нажатии другой ссылки без index.php: не найдено Запрошенный URL / new_notificamos / admin / cetagory не найден на этом сервере.
Показать ещё 9 комментариев
Теги:
codeigniter
.htaccess
apache2
ubuntu-14.04

3 ответа

0
Лучший ответ

Откройте терминал. Запустите следующий код:

sudo nano /etc/apache2/apache2.conf

спуститесь и измените:

AllowOverride All

выглядит как:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Затем перезапустите apache2.

sudo service apache2 restart

и затем.htaccess файл

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

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

Таким образом, уйдя, что это сервер Ubuntu и apache2, вам нужно делать все это.

Первое, что вам нужно сделать, если это новая установка LAMP, - это перезаписать.

Запустите эту команду, чтобы включить mod_rewrite.

sudo a2enmod rewrite

Затем вам нужно убедиться, что вы разрешаете.htaccess в вашем корневом каталоге документа.

редактировать

/etc/apache2/sites-available/000-default.conf

В этом файле поиск этого

 AllowOverride None

и изменить его на

AllowOverride All

Затем перезапустите apache2.

sudo service apache2 restart

EDIT: основываясь на вашем комментарии, вам нужно сделать так, чтобы ваш vhost выглядел так, а затем перезапустил apache2.

    <VirtualHost *:80> 
    ServerAdmin webmaster@localhost 
    DocumentRoot /var/www/html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
    <Directory /var/www/html>
      AllowOverride All
    </Directory>
    </VirtualHost>
  • 0
    мой модуль перезаписи уже включен.
  • 0
    @ InspireShahin хорошо, так ты сделал все остальное, что я сказал?
Показать ещё 13 комментариев
1

Вы уверены, что модуль mod_rewrite загружен? перейдите по адресу httpd.conf и выполните поиск -

LoadModule rewrite_module modules/mod_rewrite.so

и убедитесь, что theres no # [hash tag] до

  • 0
    да .. mod_rewrite включен перед другим способом ... но где находится файл httpd.conf, я не могу найти этот файл?
  • 0
    ну, это зависит от того, как вы его установили, он обычно находится в / etc / apache2 / conf, но вы можете проверить, включен ли он через apache-get-modules
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню