Am'am proaspat instalat Apache 2.2 pe Vista masina, totul merge bine, cu exceptia mod rewrite.
Am'am necomentate
LoadModule rewrite_module modules/mod_rewrite.s
dar niciunul din regulile de rescriere funcționează, chiar și cele simple ca
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Toate regulile I'm utilizând sunt de lucru pe hosting, astfel încât acestea ar trebui să fie ok, deci intrebarea mea este, există ceva ascuns în configurare apache, care ar putea bloca mod rewrite?
În scopul de a utiliza ` "mod_rewrite" aveți posibilitatea să tastați următoarea comandă în terminal:
sudo a2enmod rewrite
Apache2 Restart dupa
sudo /etc/init.d/apache2 restart
sau
sudo service apache2 restart
sau ca pe noul Sistem unificat de Control Mod
sudo systemctl restart apache2
Apoi, daca'd place, puteți folosi următoarele `.htaccess file.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Cele de mai sus .htaccess fișier (dacă este plasat în
DocumentRoot) vă va redirecționa traficul pe o index.php dosarul în DocumentRoot
dacă fișierul există.
Deci, să's spun că au următoarea structură de directoare și httpdocs este DocumentRoot
httpdocs/
.htaccess
index.php
images/
hello.png
js/
jquery.js
css/
style.css
includes/
app/
app.php
Orice fișier care există în httpdocs va fi servit la solicitant, folosind .htaccess
a arătat mai sus, cu toate acestea, orice altceva va fi redirecționat către httpdocs/index.php
. Fișierele de aplicație în include/app` nu vor fi accesibile.
Pentru situația mea, am avut
RewriteEngine On
în .htaccess
, împreună cu modul de a fi încărcate, și nu a fost de lucru.
Solutia la problema mea a fost de a edita mea vhost intrare la inlcude
AllowOverride all
în `
În cazul în care cele de mai sus funcționează, încercați editarea /etc/apache2/sites-enabled/000-default
aproape la partea de sus, veți găsi
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Schimba AllowOverride None " la " AllowOverride All
aceasta a lucrat pentru mine
Există multe modalități de cum puteți rezolva această problemă, dacă știi rădăcina problemei.
Problema 1
În primul rând, aceasta poate fi o problema cu apache nu au mod_rewrite.c modulul instalat sau activat.
Pentru acest motiv, ar trebui să permită, după cum urmează
sudo a2enmod rescrie
service apache2 restart`
Problema 2
Puteți, de asemenea, în plus față de cele de mai sus, daca nu merge, trebuie sa schimbi trece peste regula de la apache conf (fie apache2.conf, http.conf , sau 000-default fișier).
Găsiți "Directorul /var/www/"
Schimba "trece peste Nici unul" pentru "anula"
Problema 3
Dacă primiți o eroare care rescriu modul nu este găsit, atunci, probabil, userdir module nu este activat. Pentru acest motiv trebuie să-l activați.
sudo a2enmod userdir
Să citiți în continuare acest lucru, puteți vizita site-ul: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html
Deschideți terminal și hârtie pentru masina de scris a2enmod rescrie, va permite
"mod_rewrite" modul pentru Apache.
Apoi du-te la /etc/apache2/sites-available
și edita fișiere implicit. (Pentru aceasta trebuie să aveți permisiuni de scriere pentru acest dosar, iar site-uri disponibile folder.)
Înlocuiți de mai jos cu liniile existente de la 4 la 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>
Acum reporniți apache de /etc/init.d/apache2 restart " sau " service apache2 restart
Ia URL curat testul din nou si de data asta va fi trecut.
Noi apache versiunea a schimba în vreun fel. Dacă versiunea apache este de 2,4 atunci trebuie să te duci să /etc/apache2/
. Nu va fi un fișier numit apache2.conf
. Va trebui să editați asta(ar trebui să aveți permisiunea de rădăcină). Schimba directorul text astfel de prognoze
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Acum, reporniți apache.
service apache2 reload
Sper că funcționează.
<edit>
Doar observat ca ai spus mod_rewrite.s în loc de mod_rewrite.așa - sper că's o greșeală de scriere în cauză, și nu în httpd.conf! :)
</edit>
Am'm mai mult utilizate pentru a folosind Apache pe Linux, dar am avut de a face acest lucru în altă zi.
În primul rând, să ia o privire în Apache install. (M-am'll fi presupunând că ați instalat-o de a "C:\Program Fișiere" aici)
Uită-te în folderul: "C:\Program Files\Apache Software Foundation\Apache2.2\module de" și asigurați-vă că nu's un fișier numit mod_rewrite.deci într-acolo. (Ar trebui să fie, l's cu condiția ca parte a default instala.
Apoi, deschide "C:\Program Files\Apache Software Foundation\Apache2.2\conf" și de a deschide httpd.conf. Asigurați-vă că linia:
#LoadModule rewrite_module modules/mod_rewrite.so
este necomentate:
LoadModule rewrite_module modules/mod_rewrite.so
De asemenea, dacă doriți să activați RewriteEngine în mod implicit, s-ar putea să doriți să adăugați ceva de genul
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
la sfârșitul httpd.conf.
Dacă nu, asigurați-vă că specificați
RewriteEngine On
undeva în dumneavoastră .htaccess.
Am făcut acest lucru
sudo a2enmod rewrite
apoi, trebuie să reporniți serviciul apache prin următoarea comandă
sudo service apache2 restart
Prima dată m-am luptat cu mod_rewrite reguli ignorând traficul meu, am învățat (frustrant) pe care le-am pus în neregulă <VirtualHost>
, ceea ce însemna că traficul meu ar ignore toate de ei, indiferent cât de bine scrise au fost. Asigurați-vă că acest lucru nu e't să ți se întâmple:
# Schimbare jurnal locație pentru a se potrivi dvs. de sistem. RewriteLog /var/log/apache-rw.jurnal RewriteLogLevel 2
Acești parametri se va activa dacă efectuați un grațios reporniți Apache, astfel încât să puteți să le reciclați în și să monitorizeze îndeaproape mod_rewrite comportament. Odată ce problema este rezolvată, rândul său, RewriteLogLevel înapoi în jos și de sărbători.
În 100% din experienta mea, am'am constatat că RewriteLog m-a ajutat să descoperi problema cu regulile de rescriere. Pot't recomanda acest lucru suficient. Mult noroc in rezolvarea problemelor!
De asemenea, acest semn de carte este cel mai bun prieten: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog
Vechiul thread, vreau doar să pun că don't set AllowOverride la toate, în loc să utilizați mod specific doriți să o utilizați,
AllowOverride mod_rewrite mod_mime
Și această linie ar trebui să fie ne-a comentat
LoadModule rewrite_module modules/mod_rewrite.so
Referirile
Ceea ce a funcționat pentru mine (in ubuntu):
sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load
De asemenea, după cum sa menționat deja, asigurați-vă că AllowOverride alleste stabilit în secțiunea relevantă a
/etc/apache2/sites-available/default`