mod_rewrite

Hallo Zusammen!
Ich versuche mich gerade wein wenig am "Rewriten" meiner URLs da diese langsam nicht mehr ganz ansehnlich und vorallem SEO-gerecht sind.

Nun habe ich folgende .htaccess angelegt:
Code:
RewriteEngine On
RewriteRule ^([0-9]+)$ index.php?view=$1

Damit wollte ich erreichen, dass z.B. "http://localhost/disane/article/" in "http://localhost/disane/index.php?view=$1" umgewandelt wird.

Jedoch bekomm ich immer und immer wieder den 404-Error im Apache-Log, dass er die Ressource "http://localhost/disane/article/" nicht finden.

Scheinbar rewrited der dir URL nicht, aber ich sehe keinen Fehler.
Vielleicht sieht ja einer von Euch den Fehler.
Leider kenn ich mich nicht ganz so gut mit den RegExp aus.

Vielen Dank schon einmal!
 
Hallo,
mit "[0-9]" kriegst du nur numerische Werte.
Wenn du beliebige Strings umleiten willst, solltest du eher sowas schreiben:
Code:
RewriteEngine On
RewriteRule ^([0-9a-zA-Z]+)/?$ index.php?view=$1

mfg, metax
 
Hab mir deinen Rat mal zu Herzen genommen und das mal eingebaut.
Leider funktioniert dies auch nicht.

Ich weiß auch leider nicht, wie man solche RewriteRules anständig "debuggen" könnte, da ich die Logs der Rewrite-Engine nicht ans Laufen bekomme.

Oder kann man die Logs auch im Apache selbst einsehen?
 
Also ich habs aktuell auf meinem lokalen XAMPP liegen wie es auf meinem Webspace (bei ALL-inkl) aussieht weiß ich nicht, kann ich aber gerne mal testen.

Zu den Rewrites habe ich auch direkt noch eine Frage:
Wie mache ich das am besten, dass Media-Files (sprich CSS, JS, blablubb) nicht über die RegEx geparsed werden ohne jedem Tag nun ne BaseURL zu übergeben.

Habe schon ein fertiges Projekt was ich nun versuche umzustellen und würde ungerne nun jeden Link ändern wollen (auch wenn es nur Suchen->Ersetzen) ist.
 
Hallo,
ich hab hier noch ne Seite, die dir vielleicht weiterhilft: http://forum.modrewrite.de/topic82.html

Ansonsten: Du kannst vor einer RewriteRule mehrere Conditions angeben, die erfüllt sein müssen, damit die Regel greift.
In deinem Fall würdest du den Dateiname gegen ein Schema prüfen:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/media/
RewriteRule ^([0-9a-zA-Z]+)/?$ index.php?view=$1
So werden alle URLs, die auf das Verzeichnis "media" verweisen, nicht umgeleitet.
 
Hab mir mal deine Seite angesehen und einig Punkte abgearbeitet.
Also die Punkte 1 und 2 sind gegeben.

MOD_REWRITE ist in der httpd.conf an und eine Weiterlung via .htaccess auf z.B. Google läuft einwandfrei.

Er wirft mir im Apache-Log auch immer folgenden Fehler:
Code:
[Mon May 24 20:20:02 2010] [error] [client ::1] File does not exist: C:/xampp/htdocs/disane/events

Dass er das Verzeichnis "events" nicht findet ist ja klar, weil es nur rein "virtueller" Natur ist.

Auf meinem Webspace zeigt er zwar die Seite an, scheint aber die GET-Parameter nicht durchzuschleifen, wie man hier sieht http://staging.disane.de/events/.

Meine .htaccess sieht wie folgt aus:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/css/ 
RewriteCond %{REQUEST_FILENAME} !/js/
RewriteCond %{REQUEST_FILENAME} !/images/
RewriteCond %{REQUEST_FILENAME} !/api/

RewriteRule ^/([0-9a-zA-Z]+)/$ ?view=$1

Anmerkung:
Wie ich gerade gesehen hab, scheinen die Conditions auch nicht zu funktionieren.
Ob da ein generelles Problem mit der Engine vorliegt?

Edit 1:
Mit der Rule geht es "RewriteRule ^([^/\.]+)/?$ index.php?view=$1 [L]".
Jedoch möchte ich nun z.B. auch auf einzelne IDs gehen, wie hier z.B.:

http://staging.disane.de/article/11/

Hab dafür die Rule "RewriteRule ^([^/\.]+)/([0-9]+)/?$ index.php?view=$1&id=$2 [L]" eingefügt.
Das Ergebis: Er zerschießt mir die Styles etc. wieder komplett, was ch nicht nachvollziehen kann weil diese ja eig. durch die Conditions ausgeschlossen werden.

Edit 2:
Habs nun hinbekommen. Hab einfach eine Base-URL hinzugefügt und nun gehts.
Jedoch scheint er mir mit dem Pattern "([^/\.]+)" keine Punkte zu matchen, denn sobald ich einen Punkt im eigentlichen Match habe steigt der aus und sagt 404.
 
Zuletzt bearbeitet:
Zurück
Oben