2016-06-25 11 views
0

Ich habe eine .htaccess-Datei muss URLs für SEO-freundliche Website neu schreiben,Apache htaccess Problem auf modRewrite

Also wenn ich z. ein Artikel (zB www.example.com/article/this-is-an-artcle/) muss mich zu index.php? article = this-is-an-article umleiten.

Gleiche, was ich muss mit der Kategorieseite und Admin-Seite zu tun, so der Vollständigkeit halber so etwas wie dieses

www.ex.com/index.php?article=example-article -> www.ex.com/article/example-article 
www.ex.com/index.php?category=example -> www.ex.com/category/example 
www.ex.com/index.php?page=admin -> www.ex.com/adm 

Statt dessen ist, muss ich die Datei index.php aus der URL zu verstecken.

Ich tue dies, sondern erzeugen eine 404 Fehler

Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} . [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^article/([\w-]+)/?$ index.php?article=$1 [QSA,L,NC] 

RewriteRule ^category/([\w-]+)/?$ index.php?category=$1 [QSA,L,NC] 

RewriteRule ^adm/?$ index.php?page=admin [QSA,L,NC] 

RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

Leider kann Wenn ich die apache.err.log öffnen keine Fehler im Zusammenhang mit dem RewriteEngine sehen, also habe ich versucht, Verwenden Sie LogLevel alert rewrite:trace6 in meiner. Htaccess-Datei, aber nicht zu Protokoll, auch versucht, eine rewrite.log-Datei in Site-Ordner zu setzen, und 777 Berechtigungen, keine Änderung, Datei noch leer.

EDIT: Da diese Datei in einem anderen Server (cloud9 IDE) funktioniert und hier nicht (AWS Ubuntu 14.04) gehe ich davon aus, dass ich etwas Konfiguration vermisse. Wie kann ich das LOG aktivieren, um zu sehen, was passiert?

+0

ich erhalte einen Fehler nicht gefunden (http://blog.andreaem.com/) – andreaem

+0

Ja, alle URLs, die Verbindung überprüfen, ob Sie – andreaem

+0

den gleichen Fehler Haben Sie wollen, 404. – andreaem

Antwort

0

andreaem, versuchen Sie dies:

RewriteEngine On 


RewriteRule ^article/([a-zA-Z-_]+)+$ index.php?article=$1 [L] 

RewriteRule ^category/([a-zA-Z-_]+)+$ index.php?category=$1 [L] 

RewriteRule ^adm$ index.php?page=admin [L] 
+0

Verdammt, keine Änderungen, die Datei die ich in Frage gestellt habe funktioniert auf einem anderen Server (bei cloud9.io) aber nicht hier (AWS Ubuntu 14.04) Ich denke hier vermisse ich etwas, kann aber nicht verstehen was. – andreaem

+0

@andream Wenn Sie die gleiche .htaccess-Datei auf einem anderen Server getestet haben, und funktioniert .... Ich schlage vor, Sie die Datei httpd.conf Parameter des Apache zu überprüfen: Optionen Alle \t AllowOverride All Hinweis: Wenn Sie auf lokale serever testen, Apache Xammp oder Maammp eine Konsole hat, wo Sie die Konfigurationsdateien ändern können, auch um die Fehlerprotokolle zu sehen. –

0

Run es durch eine Syntaxprüfung vielleicht

Z.B. http://www.htaccesscheck.com/

+0

Danke für die Antwort, ich habe es tatsächlich bereits getestet mit diesem Tool vor dem hier einreichen, das Ergebnis war: Syntax überprüft ok! – andreaem

0

Sie wahrscheinlich bekommen 404 Fehlerstatus becouse der relativen Rewrite Ziele, einen Schrägstrich vor Ihrer traget Pfade hinzufügen, dh :(/index.php)

Options +FollowSymLinks 

RewriteEngine On 


RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^article/([\w-]+)/?$ /index.php?article=$1 [QSA,L,NC] 
+0

Keine Änderungen, habe den gleichen 404 Fehler, ist es möglich, dass ich einige PHP-Plugin oder Konfiguration verpasst habe? – andreaem