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?
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.
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.
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.
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
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!
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
-
Otwórz konsolę i wpisz do niej to:
sudo a2enmod rewrite
-
Uruchom ponownie serwer apache.
service apache2 restart
Problem 2
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).
Znajdź " katalog / var / www/"
-
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ć.
-
Wpisz to do konsoli:
sudo a2enmod userdir
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
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.
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.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.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
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
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
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!
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
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
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
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