4Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
663
663
EMPFEHLEN
-
Guten Tag alle.
Ich möchte gerne alle URL's von Format http://zahnrad.de/Backend/main.php?section=blabla
umwandeln in http://zahnrad.de/blabla
Leider ist das Thema Mod_Rewrite und RewriteRules völlig neu für mich so das ich nur die Hälfte verstehe. Wäre sehr nett wenn mir jemand etwas weiterhelfen könnte.
Grüsse Joe.Geändert von Joe (16.11.10 um 19:12 Uhr)
-
Sind eigentlich normale Reguläre Ausdrücke....
Dieses .htaccess muss direkt unter http://zahnrad.de abgelegt sein
Code :1 2 3 4 5 6 7 8 9 10
#Rewrite Engine einschalten RewriteEngine on #nur Pfade umleiten die keine Datei sind RewriteCond %{REQUEST_FILENAME} !-f #nur Pfade umleiten die kein Ordner sind RewriteCond %{REQUEST_FILENAME} !-d # alles an meine Datei weiterleiten. Von da kann man dan machen was man will... # http://zahnrad.de/blabla -> http://zahnrad.de/Backend/main.php?section=blabla RewriteRule ^(.*)$ Backend/main.php?section=$1 [L,QSA]---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
17.11.10 13:14 #3
- Registriert seit
- Nov 2010
- Beiträge
- 56
Hallo,
da wären vielleicht noch ein oder zwei Dinge zu erwähnen. Vorallem manch "Neulinge" in der Welt der .htaccess gehen in der Annahme, sie könnten damit ihre bestehende Linkstruktur nach außen ändern. Das ist natürlich nicht der Fall. Die muss schon im Quellcode selbst geändert werden. Die .htaccess biegt vielmehr entsprechend der RewriteRules die Requests um.
Nach "RewriteEngine On" sollte man am besten auch ein "RewriteBase /" angeben, auf die sich die folgenden Requests beziehen. Dadurch muss man sich um den Prefix (Domainnamen) nicht kümmern, der von der RewriteEngine verwaltet wird. Man kann zuhauf Probleme googeln, bei denen durch ein fehlendes RewriteBase RewriteRules nicht oder falsch abgearbeitet werden.
Je nach Serverkonfiguration kann auch ein "+OptionFollowSymLinks" notwendig sein; ich würd's erstmal ohne probieren.
Im Gegensatz zu entsprechenden PHP-Funktionen dürfen Reguläre Ausdrücke in der htaccess keine Delimiter (Begrenzungszeichen) angegeben werden. Das könnte zu falschen Ergebnissen führen.
RewriteCond ist als eine Art "If"-Abfrage zu verstehen, d.h. die nachfolgende RewriteRule kann an bestimmte Bedingungen geknüpft werden. Wer allerdings eine relativ einfache Seitenstruktur hat, kommt meist ohne aus.
Last but not least muss allerdings dafür der Server auch entsprechend eingerichtet sein, um überhaupt "rewriten" zu können. In Apache muss das mod_rewite-Modul eingebunden sein, in der httpd.conf muss "AllowOverrides None" (oft standardmäßig eingestellt) auf "AllowOverrides All" und das evtl. folgende "deny from all" muss in "Allow from all" geändert werden.
Alles in allem ist das Thema rund um die RewriteEngine von Apache relativ komplex. Wer dem Gedanken anhängt, dass Thema in 1-2 Stunden abgehandelt zu haben, wird enttäuscht werden. Unabdingbar ist, sich zuerst intensiv mit den regulären Ausdrücken zu beschäftigen (wer's bis dato noch nicht getan hat). Es gibt zwar unzählige Beispiele im Netz, aber in den seltensten Fällen findet man das, was man gerade für sich persönlich braucht.
Hier noch ein bisschen Lektüre:
http://httpd.apache.org/docs/current...ml#rewritebase
http://www.workingwith.me.uk/article...ng/mod_rewrite
http://suchmaschinentricks.at/tipps-...d_rewrite.html
http://corz.org/serv/tricks/htaccess2.php?page=3
http://www.htaccess-guide.com/
Greetz
cw
-
Erstmal vielen Dank euch beiden.
Nachdem ich gestern stundenlang probiert habe kann ich nur bestätigen was chickenwing sagt. Erstens damit wird man mal nicht eben im vorbeigehen fertig und 2.ens es ist einfacher Fehler zu provozieren als was vernünftiges hinzukriegen.
Aber anscheinend habe ich was grundsätzlich falsch verstanden glaube ich.
Mein Gedanke war folgender.
Ich habe eine lange und umständliche URL, diese wollte ich sozusagen Umschreiben in eine kürzere URL mit Hilfe von Mod_Rewrite. Die so umgeschriebene URL soll dann in der Adresszeile auch sichtbar sein anstatt der alten langen URL. Gleichzeitig soll doch nach wie vor auf die Seite weitergeleitet werden.
Also entweder ich verstehe was nicht richtig oder was ich will geht schlicht so nicht.
Schlichtes Bsp.:Die Seite http://zahnrad.de/info.php soll umbenannt werden in http://zahnrad.de/foo.php.HTML-Code:RewriteEngine On Options +FollowSymlinks RewriteBase / #Soll die Seite info.php in foo.php umbenennen RewriteRule (.*)\info.php$ $1foo.php #Sperrt den Zugriff auf den Ordner includes und leitet auf die index.php um RewriteRule includes /index.php [R=301,L] # Leitet bei Error 404 auf die Seite Index.php um ErrorDocument 404 /index.php # Schaltet das Indexverzeichniss nach aussen hin ab Options -Indexes
Das wirft aber lediglich einen 404 Error.
Mein Hoster hat definitiv ModRewrite angeschalten.
Also ich hab schlicht NULL Plan warum das nicht geht wie ich gern hätte.
-
17.11.10 16:52 #5
- Registriert seit
- Nov 2010
- Beiträge
- 56
Hallo,
tja, dem Irrglauben, ich könnte mit mod_rewrite meinen Querystring umschreiben, bin ich auch mal verfallen
als ich angefangen habe, mich damit zu beschäftigen. Wäre ja auch zu schön gewesen.
Aber wie sollte das gehen? Die RewriteEngine "biegt" ja die Requests von außen um und nicht Deine Antwort (hier u.a. Deine internen Links).
Du musst also erstmal Deine Linkstruktur ändern, wie sie nach außen hin zu sehen sein soll und dann kannst Du darauf basierend mittels htaccess auf die tatsächlichen Inhalte verweisen.
Vereinfacht gesagt, wenn Deine bisherigen Links so aussahen wie index.php?id=Ursula&hobby=stricken, dann musst Du Deinen Code erstmal so umstricken, dass Deine Links z.B. so aussehen: ursula-stricken.html . Wenn jetzt ein Besucher auf ursula-stricken.html klickt, dann kannst Du mittels htaccess daraus index.php?id=ursula&hobby=stricken machen. Nur so rum geht das...
Rewrite frickelt Dir also Deine "Aufrufe" um, nicht aber Deine Inhalte.
Wenn es nur darum geht, eine exakt bestimmte Datei umzuleiten, dann kannst Du auch
#Soll die Seite info.php in foo.php umbenennen
RewriteRule \/info.php$ /foo.php
schreiben.
Um den Prefix http://zahnrad.de musst Du Dich nicht kümmern, da Du das via Rewritebase der Rewriteengine überlässt. Lediglich um das "/" sollte man sich evtl. kümmern, damit sowohl http://zahnrad.de als auch http://zahnrad.de/ zum selben Ergebnis kommen (ich mach das jedenfalls immer so; sollte ich vllt. mal ausprobieren, ob's wirklich nötig ist). Allerdings muss im o.g. Beispiel auch die Datei foo.php im Gegensatz zu info.php vorhanden sein. Bei der Anordnung gilt immer:
RewriteRule Bedingung /Ergebnis, nicht andersherum
Greetz
cwGeändert von chickenwing (17.11.10 um 17:07 Uhr)
-
Also dem Irrglauben zu erliegen ist auch garnicht so schwer, wird ja auch in jedem Tut die Möglichkeit des ShortURL angepriessen. Immerhin ist jetzt etwas Licht ins Dunkel gekommen auch wenns mir immernoch nicht ganz klar ist wie das alles miteinander arbeitet.
Werd die Sache jetzt erstmal auf ne ganz lange Bank schieben
Oder besser ganz Ad-Acta legen. Wäre ohnehin nur kosmetische Sache gewsesen und die Sicherheit wird auch nur geringfügig erhöht. Wobei es sicher noch etliche andre Dinge gibt um die Sicherheit zu erhöhen.
Nicht desto trotz Danke für die ausführlichen Antworten.
-
17.11.10 19:24 #7
- Registriert seit
- Nov 2010
- Beiträge
- 56
Na sagen wir mal so: es gibt einfach gigantische Möglichkeiten!
Abgesehen von "suchmaschinenfreundlichen"-URLs kannst Du so ziemlich jeden Zugriff von außen zulassen, blockieren, redirecten und was weiß ich noch alles.
Das mit den short-URLs stimmt ja auch, bloß musst Du die halt einpflegen und dann durch die RewriteEngine umpfriemeln lassen. Ich finde alleine schon die Möglichkeit cool, dem Besucher und den Sumas eine vermeintlich statische html-Seite zu präsentieren, die tatsächlich aber eine dynamische php-Seite ist. Das einzige, was mich bislang davon abgehalten hat, alle meine Seiten umzuschreiben, ist, dass ich mein lokalen Testserver (basierend auf einer Xampp-Installation unter XP) nicht dazu bringen kann, meine htaccess richtig abzuarbeiten. Wenn ich das (jemals) gelöst bekomme, hat für meine Seiten die Stunde Null geschlagen und keine ist mehr sicher vor mir
Greetz
cw
Ähnliche Themen
-
htaccess und Mod_Rewrite
Von GangXtaBoiii im Forum Hosting & WebserverAntworten: 1Letzter Beitrag: 18.02.10, 17:05 -
Problem mit. .htaccess (mod_rewrite)
Von blubber02 im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 08.02.10, 16:42 -
htaccess mod_rewrite GET-Parameter
Von fiacyberz im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 19.05.09, 17:30 -
Mod_Rewrite und die .htaccess bei 1und1
Von derheine im Forum Hosting & WebserverAntworten: 1Letzter Beitrag: 01.07.08, 13:01 -
.htaccess und mod_rewrite
Von LapisInfernalis im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 25.01.05, 09:43





Zitieren

Login





