Назад | Перейти на главную страницу

Не могу понять, как включить mod_rewrite в ubuntu

Я чувствую, что все сделал правильно:

josiah@BOX-OF-DOOOM:~$ sudo apache2ctl start
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
josiah@BOX-OF-DOOOM:~$ sudo a2enmod rewrite
Module rewrite already enabled
josiah@BOX-OF-DOOOM:~$ sudo apache2ctl restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
josiah@BOX-OF-DOOOM:~$ 

Затем в моем .htaccess (это для CodeIgniter):

  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTPS} !=on
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
  </IfModule>

  <IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
  </IfModule>
  <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Expires "Thu, 15 Apr 2011 20:00:00 GMT"
  </FilesMatch>

И все же переход к чему-либо без явного ввода "index.php" не загружается. Любые идеи?

Предполагается, что он принимает любой отправленный URL-адрес (/ любой / URL / был) в apache и перенаправляет на index.php / независимо от / URL / был. Если я ввожу index.php / независимо / что / url / был, он отлично работает, но если я удалю index.php, он не удастся.

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

Кроме того, похоже, что mod_rewrite не включен, хотя a2enmod говорит, что он есть (как я вставил выше)

josiah@BOX-OF-DOOOM:~$ sudo apache2ctl -l
[sudo] password for josiah: 
Compiled in modules:
  core.c
  mod_log_config.c
  mod_logio.c
  prefork.c
  http_core.c
  mod_so.c

Если вы поместили файл .htaccess на свой сервер и не работает должным образом, возможно, вы пытаетесь установить сайт Drupal или установить Zend Framework, выполните следующие действия.

Найдите файл виртуального хоста вашего сайта или отредактируйте 000-default в / etc / apache2 / sites-enabled /

Добавьте эти строки:

<Directory /var/www/mysite/>
AllowOverride all
</Directory>

после этого блока:

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

Перезагрузите сервер с помощью

sudo /etc/init.d/apache2 reload

Это нужно делать после каждой модификации.

Если вы получаете ошибку типа 500 при попытке просмотреть свой сайт, не паникуйте!

Это происходит потому, что модуль перезаписи не включен по умолчанию из соображений безопасности.

Создайте новый файл с именем rewrite.conf в / etc / apache2 / с поддержкой модов в файле поместите эту строку

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Перезагрузите еще раз сервер.

В конфигурации VirtualHost или в блоке каталога сделайте что-нибудь вроде:

<Directory /path/to/webroot/>
AllowOverride all
</Directory>

a2enmod загружает модули, которые не скомпилированы в apache, но динамически связаны.