Jak włączyć mod rewrite dla Apache 2.2

Mam świeżą instalację Apache 2.2 na moim komputerze Vista, wszystko działa dobrze, z wyjątkiem mod rewrite.

I ' ve uncommoned

LoadModule rewrite_module modules/mod_rewrite.s

Ale żadna z moich zasad przepisywania nie działa, nawet te proste jak

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

Wszystkie zasady, których używam działają na moim hostingu, więc powinny być ok, więc moje pytanie brzmi, czy jest jakaś ukryta rzecz w konfiguracji apache, która mogłaby zablokować mod rewrite?

Author: Jakub Arnold, 2009-05-15

16 answers

W celu użycia mod_rewrite możesz wpisać w terminalu następujące polecenie:

sudo a2enmod rewrite
W tym celu należy skontaktować się z Działem obsługi klienta.]}
sudo /etc/init.d/apache2 restart

Lub

sudo service apache2 restart

Lub zgodnie z nowym zunifikowanym sposobem sterowania systemem

sudo systemctl restart apache2

Następnie, jeśli chcesz, możesz użyć następującego pliku .htaccess.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Powyższy plik .htaccess (jeśli zostanie umieszczony w twoim DocumentRoot) przekieruje cały ruch do index.php pliku w DocumentRoot, chyba że plik istnieje.

Powiedzmy, że masz następujący katalog struktura i httpdocs to DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

Każdy plik, który istnieje w httpdocs, zostanie dostarczony do żądającego za pomocą .htaccess pokazanego powyżej, jednak Wszystko inne zostanie przekierowane do httpdocs/index.php. Pliki aplikacji w includes/app nie będą dostępne.

 886
Author: Jonathan Mayhak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-13 07:49:05

Dla mojej sytuacji, miałem

RewriteEngine On

W moim .htaccess, wraz z załadowanym modułem i nie działał.

Rozwiązaniem mojego problemu było edytowanie mojego wpisu vhost do inlcude

AllowOverride all

W sekcji <Directory> dla danej strony.

 214
Author: Mike Wazowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 09:55:05

Pisałem o tym w artykule: http://www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu

Spróbuj ustawić: AllowOverride All.


Drugim najczęstszym problemem jest brak włączonej zmiany modów: a2enmod rewrite, a następnie ponowne uruchomienie apache.

 77
Author: Jarrod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-17 20:35:04

W związku z tym, że nie jest to możliwe, nie jest to możliwe.]}

Prawie na górze znajdziesz

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

Zmień AllowOverride None na AllowOverride All

To zadziałało dla mnie

 70
Author: Martin Sax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 16:32:45

W Ubuntu:

Run:

a2enmod rewrite

A następnie:

service apache2 restart

mod_rewrite będzie teraz włączony!

 41
Author: nickleefly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-13 12:01:34

Istnieje wiele sposobów rozwiązania tego problemu, jeśli znasz źródło problemu.

Problem 1

Po pierwsze, może to być problem z tym, że Twój apache nie ma mod_rewrite.moduł c zainstalowany lub włączony.

Z tego powodu musisz włączyć go w następujący sposób

  1. Otwórz konsolę i wpisz do niej to:

    sudo a2enmod rewrite

  2. Uruchom ponownie serwer apache.

    service apache2 restart

Problem 2

  1. W związku z powyższym, jeśli nie będzie to działać, może być konieczna zmiana reguły nadpisywania z pliku Apache conf (albo apache2.conf, http.conf , or 000-plik domyślny).

  2. Znajdź " katalog / var / www/"

  3. Zmień "Override None "na"Override All"

Problem 3

Jeśli pojawi się błąd stwierdzający, że moduł rewrite nie został znaleziony, prawdopodobnie Twój moduł userdir nie jest włączona. Do tego powód, dla którego musisz go włączyć.

  1. Wpisz to do konsoli:

    sudo a2enmod userdir

  2. Następnie spróbuj włączyć moduł przepisywania, jeśli nadal nie jest włączony (jak wspomniano powyżej).

Aby przeczytać więcej na ten temat, możesz odwiedzić tę stronę: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html

 27
Author: Kripa Jayakumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-09 18:33:38

Otwórz terminal i typin a2enmod rewrite, włączy twój moduł mod_rewrite dla Apache.

Następnie przejdź do /etc/apache2/sites-available i edytuj domyślny plik. (W tym celu musisz mieć uprawnienia do zapisu do tego pliku i folderu sites-available.)

Zastąp poniżej istniejącymi liniami od 4 do 14

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Teraz uruchom ponownie Apache przez /etc/init.d/apache2 restart lub service apache2 restart

Wykonaj ponownie test czystego adresu URL i tym razem zostanie on zaliczony.

 24
Author: Umesh Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 11:59:46

Nowa wersja apache zmieniła się w jakiś sposób. Jeśli Twoja wersja apache jest 2.4, musisz przejść do /etc/apache2/. Pojawi się plik o nazwie apache2.conf. Musisz to edytować(powinieneś mieć uprawnienia roota). Zmień tekst katalogu w ten sposób

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

Teraz uruchom ponownie apache.

service apache2 reload
Mam nadzieję, że zadziała.
 16
Author: Ijas Ahamed N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-18 06:09:14

Właśnie zauważyłem, że powiedziałeś mod_rewrite.s zamiast mod_rewrite.so -mam nadzieję, że to literówka w twoim pytaniu, a nie w httpd.plik conf! :)

Jestem bardziej przyzwyczajony do korzystania z Apache na Linuksie, ale musiałem to zrobić niedawno.

Po pierwsze, zajrzyj do katalogu instalacyjnego Apache. (Zakładam, że zainstalowałeś go do "C:\Program pliki" tutaj)

Zajrzyj do folderu: "C:\Program Files\Apache Software I upewnij się, że istnieje plik o nazwie mod_rewrite.so tam. (Powinno być, jest dostarczany jako część domyślnej instalacji.

Następnie otwórz "C:\Program zapraszamy do zapoznania się z naszą ofertą.conf. Upewnij się, że linia:

#LoadModule rewrite_module modules/mod_rewrite.so

Jest niekompletne:

LoadModule rewrite_module modules/mod_rewrite.so

Ponadto, jeśli chcesz domyślnie włączyć RewriteEngine, możesz dodać coś w stylu

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

Do końca twojego httpd.conf plik.

Jeśli nie, upewnij się, że podasz

RewriteEngine On
Gdzieś w Twoim .plik htaccess.
 13
Author: gabehabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-16 22:31:14

Właśnie to zrobiłem

sudo a2enmod rewrite

Następnie należy ponownie uruchomić usługę apache, wykonując polecenie

sudo service apache2 restart
 4
Author: user3470929,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 11:58:21

Jest oczywiście więcej niż jeden sposób, ale sugerowałbym użycie bardziej standardowego:

ErrorDocument 404 /index.php?page=404
 3
Author: Michael Cramer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-15 15:52:58

Po raz pierwszy zmagałem się z regułami mod_rewrite ignorującymi mój ruch, dowiedziałem się (frustrująco), że umieściłem je w niewłaściwym <VirtualHost>, co oznaczało, że mój ruch zignoruje wszystkie bez względu na to, jak dobrze napisane były. Upewnij się, że to nie dzieje się z Tobą:

# Change the log location to suit your system. RewriteLog /var/log/apache-rw.log RewriteLogLevel 2

Te parametry zostaną aktywowane, jeśli wykonasz pełen wdzięku restart Apache ' a, dzięki czemu będziesz mógł je przetwarzać i uważnie monitorować zachowanie mod_rewrite. Gdy problem zostanie rozwiązany, włącz RewriteLogLevel z powrotem w dół i świętować.

W 100% mojego doświadczenia odkryłem, że przepisywanie pomogło mi odkryć problem z moimi zasadami przepisywania. Nie mogę tego wystarczająco polecić. Powodzenia w rozwiązywaniu problemów!

Również ta zakładka jest twoim najlepszym przyjacielem: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog

 2
Author: Garrett Ellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-29 09:29:27

Zdecydowanie odradzam wszystkim, którzy chcą włączyć dyrektywy mod_rewrite w .pliki htacces używać AllowOverride FileInfo zamiast zezwalać na wszystko, jak sugerują wszystkie odpowiedzi na tej stronie. Smutne, że wszystkie te odpowiedzi przyjmują podejście "tak długo, jak to działa", zamiast próbować zrozumieć konsekwencje proponowanego "rozwiązania". Spróbuj zrozumieć, co robisz na swoim serwerze i jak ograniczyć uprawnienia, które właśnie oddałeś AllowOverride All. RTFM!, jest całkiem jasne na temat. Dajcie spokój chłopaki, to nie rocketscience, to tylko serwer WWW!

 2
Author: RemyNL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-19 14:10:23

Stary wątek, po prostu chcę umieścić, że nie ustawić AllowOverride do wszystkich zamiast użyć konkretnego mod chcesz użyć,

AllowOverride mod_rewrite mod_mime

I ten wiersz powinien być nie skomentowany

LoadModule rewrite_module modules/mod_rewrite.so

Refreny

 2
Author: Abhishek Gurjar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-27 09:03:48

Co u mnie działało (w ubuntu):

sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

Również, jak już wspomniano, upewnij się, że {[1] } jest ustawiony w odpowiedniej sekcji /etc/apache2/sites-available/default

 1
Author: Benubird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-07 10:00:50

Użyj poniższego polecenia

sudo a2enmod rewrite

I uruchom ponownie apache za pomocą poniższego polecenia

sudo service apache2 restart
 0
Author: prasoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 13:37:24