[mod_rewrite] Probleme

traffic

Well-known member
5 Mai 2006
675
25
Hallo,

möchte meinen Shop Googletauglich zu machen. Wollte es mit mod_rewrite
machen.

Habe dafür eine .htaccess-Datei erstellt mit folgendem Inhalt:
PHP:
RewriteEngine on
RewriteRule ^(.*).php$ $1.html

Die Datei ist im Hauptordner des Webservers.

Wenn ich nun auf den Shop gehe, ist aber noch alles ...../index.php?main=artikel

mhh, was mache ich da verkehrt?
 
Die .htaccess allein hift dir nicht.
Du musst auch die Dateinamen innerhalb des Skripts dementsprechend abändern.

In der .htaccess machst du aus allen .html eine .php und in deinen skript ersetzt du alle dateinamen die mit .php enden durch .html
Du musst dann also nicht index.php sondern index.html aufrufen ;-)

P.S.: Deine Rewrite-Rule ist falsch rum, so wie sie da seht wird aus php dann html gemacht, du musst das aber andersrum haben...
 
Hallo,

mod_rewrite ändert nicht die Inhalte oder Links deiner Seiten.

Was mod_rewrite tut, ist: eingegebene URLs umschreiben.
Das heißt (in deinem Beispiel), wenn im Browser hallo.php eingegeben wird, wird intern auf hallo.html umgeleitet.
Das passiert auch, wenn ein Besucher per Link zu der Datei hallo.php kommt.

In dieser Richtung ist das aber eher unsinnig. Was du wohl haben möchtest ist:


Code:
RewriteEngine on
RewriteRule ^(.*).html$ index.php?main=$1 [QSA]

Dann wird die Adresse artikel.html intern zu index.php?main=artikel umgeschrieben und jeder mitgegebene Parameter weitergeleitet.

Die Links auf deiner Homepage musst du aber trotzdem noch per Hand ändern.

Gruß ;)

Edit: Prinzipiell zu spät... dafür aber detaillierter :p ;)
 
Die .htaccess allein hift dir nicht.
Du musst auch die Dateinamen innerhalb des Skripts dementsprechend abändern.

In der .htaccess machst du aus allen .html eine .php und in deinen skript ersetzt du alle dateinamen die mit .php enden durch .html

P.S.: Deine Rewrite-Rule ist falsch rum, so wie sie da seht wird aus php dann html gemacht, du musst das aber andersrum haben...

habe einen PHP-Shop...möchte das die URL's mit .html enden...
habe ich es trotzdem verkehrt gemacht?
 
Hallo,

mod_rewrite ändert nicht die Inhalte oder Links deiner Seiten.

Was mod_rewrite tut, ist: eingegebene URLs umschreiben.
Das heißt (in deinem Beispiel), wenn im Browser hallo.php eingegeben wird, wird intern auf hallo.html umgeleitet.
Das passiert auch, wenn ein Besucher per Link zu der Datei hallo.php kommt.

In dieser Richtung ist das aber eher unsinnig. Was du wohl haben möchtest ist:


Code:
RewriteEngine on
RewriteRule ^(.*).html$ index.php?main=$1 [QSA]

Dann wird die Adresse artikel.html intern zu index.php?main=artikel umgeschrieben und jeder mitgegebene Parameter weitergeleitet.

Die Links auf deiner Homepage musst du aber trotzdem noch per Hand ändern.

Gruß ;)

Edit: Prinzipiell zu spät... dafür aber detaillierter :p ;)

danke hab nun deinen Ratschlag genommen...
wenn ich nun aber artikel.html eintippe, kommt Objekt nicht gefunden
Was mache ich denn noch verkehrt?

Code:
RewriteEngine on RewriteRule ^(.*).html$ index.php?main=$1 [QSA]
 
Zuletzt bearbeitet:
hab ich geändert...
wwenn ich nun in die url was eingebe...kommt wieder Objekt nicht gefunden
 
Dann ist anscheinend das Rewrite Modul nicht geladen. Erstell mal eine datei namens info.php mit dem Inhalt
PHP:
<?php
phpinfo();
?>

hochladen aufrufen. und schauen ob unter LoadModule: mod_rewrite.so steht, wenn nicht Hoster fragen ob er es nachladen kann.
 
Dann ist anscheinend das Rewrite Modul nicht geladen. Erstell mal eine datei namens info.php mit dem Inhalt
PHP:
<?php
phpinfo();
?>

hochladen aufrufen. und schauen ob unter LoadModule: mod_rewrite.so steht, wenn nicht Hoster fragen ob er es nachladen kann.

Zitat
Loaded Modules: core mod_access mod_auth mod_log_config mod_logio mod_env mod_setenvif prefork http_core mod_mime mod_status mod_autoindex mod_negotiation mod_dir mod_alias mod_so mod_rewrite mod_php5 mod_cgi mod_dav mod_dav_fs mod_include mod_actions mod_mime_magic mod_cache mod_disk_cache mod_proxy proxy_http mod_vhost_limit
 
Dann würde ich sagen hast du deine .htaccess nicht im ASCII Modus hochgeladen oder du hast noch einen Dateieindung dran ala .htaccess.txt oder sowas.
 
Dan weis ich nur noch ein Ding wo es hängen kann und zwar an
modrewrite.de schrieb:
Ursache: Die Direktive AllowOverride in der httpd.conf für deinen <Directory>-Abschnitt steht auf none oder erlaubt nicht "FileInfo" zu überschreiben.
In AllowOverride wird quasi angegeben, was in .htaccess-Dateien alles genutzt werden kann (bzw. welche Einstellungen aus der httpd.conf überschrieben werden können). Für den Gebrauch von mod_rewrite muss FileInfo überschrieben werden dürfen.
Exclamation Lösung: Ohne Zugriff auf die Server-Config kann man da nichts machen, siehe 6.; Minimal-Config im <Directory /www/user1/htdocs/>also

Hoster fragen wenn dem so ist. Hier nochmal ein Link wo alles schön beschrieben ist.
Welche Url ist dein shop?
 
An diese httpd.conf kommst du nicht ran außer Du hast einen root Server sowas kann sonst nur der Support machen. Frage die die können es dir am einfachsten und schnellsten sagen. Oder tips geben.
 
An diese httpd.conf kommst du nicht ran außer Du hast einen root Server sowas kann sonst nur der Support machen. Frage die die können es dir am einfachsten und schnellsten sagen. Oder tips geben.

gut danke

Zitat beim Hoster

Link

Für die Profis unter Ihnen: Die Option "AllowOverride All" ist gesetzt
heißt das nicht, dass es vom hoster eigentlich aus gehen müßte?
 
Zuletzt bearbeitet von einem Moderator:
Also ich will ja nicht dein Können in frage stellen aber dan bleibt nur noch das du die htaccess entweder nicht .htaccess genannt hast, sie nicht im ASCII modus oben liegt oder einen weitere Endung hat.

Aber da wir das alles gecheckt haben, könnte man das ja alles ausschließen.

Um es kurz zu machen Meld dich mal per PM oder ICQ wenn vorhanden und schick mir mal einen FTP Account zu dann schau ich mal schnell. Vielleicht finde ich ja den Fehler.

bzw. als letzten Versuch schreibe mal das in die allererste Zeile deiner htaccess

Options +FollowSymlinks
 
Also ich will ja nicht dein Können in frage stellen aber dan bleibt nur noch das du die htaccess entweder nicht .htaccess genannt hast, sie nicht im ASCII modus oben liegt oder einen weitere Endung hat.
... oder (höchst unwahrscheinlichsterweise) wurde AccessFileName geändert :mrgreen:

Das lässt sich aber schnell ausschließen, indem man in seiner .htaccess n ErrorDocument- oder n Deny-Befehl reinschreibt und guckt, ob der wirkt.
 
Code:
RewriteEngine on
RewriteRule ^(.*)[B]\[/B].html$ [B]/[/B]index.php?main=$1 [QSA]
Das leitet dann alle Anfragen auf die index.php um