Jak włączyć mod_rewrite w Apache?

164

Właśnie zainstalowałem stos LAMP na moim systemie Ubuntu.

Przekierowanie nie działa dla mnie. Nie wiem jak to naprawić. Czy ktoś może mi pomóc?

Vinoth
źródło
3
IMHO to pytanie nie jest specyficzne dla Ubuntu i powinno zostać przeniesione do błędu serwera .
Paolo
2
OP zainstalował Lampę na UBUNTU. Ile bardziej specyficzny dla Ubuntu chcesz?
wojox
1
@wojov: Nie wiem o tej sprawie, ale ten argument nie działa. „Jak mogę korzystać z tej aplikacji (na Ubuntu)?” są w większości nie na temat.
23
To nie jest „Jak korzystać z aplikacji”, ale „jak włączyć określoną funkcję w Ubuntu”. Apache pod Ubuntu używa innego układu konfiguracji, w którym każdy moduł i wirtualny host jest plikiem, /etc/apache2i który można włączyć za pomocą a2*programów.
Lekensteyn
Powinieneś opisać, co zrobiłeś, aby zawęzić problem
ericn

Odpowiedzi:

238

Aby włączyć moduł przepisywania, uruchom „apache2 enable moduł przepisywania”:

sudo a2enmod rewrite

Musisz ponownie uruchomić serwer, aby zastosować zmiany:

sudo service apache2 restart

Jeśli planujesz używać mod_rewrite w .htaccessplikach, musisz także włączyć korzystanie z .htaccessplików, zmieniając AllowOverride Nonena AllowOverride FileInfo. W przypadku domyślnej strony internetowej edytuj /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Po takiej zmianie musisz ponownie uruchomić Apache.

Lekensteyn
źródło
18
Miałem większy sukces z AllowOverride All
Valentin Despa,
Dzięki! sudo a2enmod rewritei FileInfonaprawiłem to dla mnie!
d -_- b
22
Dla mnie ten plik to /etc/apache2/apache2.conf, w którym znalazłem ten wpis konfiguracji
doc_id
Tak, dwie zmiany rozwiązały problem.
Adelin
To nie działa dla mnie. Wysłałem
Suhail Gupta
49

Odważę się dodać specjalną odpowiedź (będącą kontynuacją świetnej odpowiedzi powyżej) dotyczącą Ubuntu 14.04 i .htaccess:

W 14.04 nazwa domyślnego pliku konfiguracyjnego zostaje zmieniona na 000-default.conf:

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

dodaj następujące na końcu pliku:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Z jakiegoś powodu w Ubuntu 14.04 i apache2 root jest ustawiony na /www/html. Jeśli chcesz zmienić katalog główny serwera WWW z powrotem na stary /www, dobry open 000-default.confi zmień

DocumentRoot /var/www/html/

do

DocumentRoot /var/www/

i oczywiście powinno być

<Directory "/var/www">
    AllowOverride All
</Directory>
dawidkonrad
źródło
1
Dzięki za informację! W ten / nowy sposób możemy używać www jako folderu, w którym umieszczamy wszystkie strony internetowe, a HTML jest domyślnie „witryną” dla localhost. Może to być ważne, jeśli grasz z otwieraniem portów na świat - w ten sposób lokalny host nie widzi folderów innych projektów.
Vladimir Vukanac
1
To nie działa dla mnie. Używam Ubuntu 14.04.4 LTS
Suhail Gupta