Thema: mod_rewrite htaccess
-
22. 01. 2012, 02:04 #1Mitglied
- Registriert seit
- May 2008
- Beiträge
- 122
mod_rewrite htaccess
Hallo gullis
Ich wüßte gerne wie ich die htaccess für eine url setzen muss
da ich noch recht neu bin und keine ahnung habe und ich in google die erklärungen nicht verstanden habe versuch ich es mal hier.
ich würde gerne aus dieser url : index.php?section=support
gerne diese machen : index.php/support
soll laut google besser für den sucher modus sein ob da was dran ist weiß ich nicht!
Danke schonmal für jede hilfe.
-
22. 01. 2012, 13:45 #2
Re: mod_rewrite htaccess
Für URIs der Form
benötigst du nicht einmal mod_rewrite, es reicht, wenn auf dem Webserver die Path-Info-Unterstützung aktiv ist und dein Skript statt $_GET['section'] den Inhalt von $_SERVER['PATH_INFO'] auswertet. Siehe auch http://www.php.net/manual/en/reserve...les.server.php, speziell den Abschnitt zum PATH_INFO-Feld.
Möchtest du hingegen externe URIs wie z.B. http://example.com/support zu http://example.com/index.php?section=support umschreiben, wäre mod_rewrite erforderlich. In diesem Fall könnte ein passender Regelsatz etwa
sein.Code:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^\w+$ index.php?section=$0
-
23. 01. 2012, 01:35 #3Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
ob mein server diese unterstützung hat weiß ich nicht kann das dort auch nirgends finden hab mir die seite mal angeschaut aber nichtmal 10% davon verstanden ich weiß nur das wenn ich meine daten auf dem ftp habe und die url angebe das oben meine kompllter pfad drin steht.
zu deinem geschrieben code:
ich weiß nicht ob ich mich falsch ausgedrückt oder du mich vlt nur falsch verstanden hast dein weg ist richtig nur leider genau falsch rum
du hast mir den code gegeben um uri's von http://example.com/support zu http://example.com/index.php?section=support machen .
doch ich bräuchte das genau andersrum
ich hoffe du kannst mir das vlt ein bissl umschreiben das die funzt
Danke schonmal
-
23. 01. 2012, 01:48 #4
Re: mod_rewrite htaccess
Kaum - möglicherweise hast du missverstanden, was mod_rewrite genau leistet. mod_rewrite (und URI-Rewriting-Module anderer Webserver ebenso) schreibt die angeforderten (externen) URI server-intern gemäss einem festgelegten Regelsatz um. Der von mir genannte Regelsatz würde etwa angeforderte URIs der Form http://example.com/support server-intern zu http://example.com/index.php?section=support umschreiben. Dadurch wird ein externer Aufruf von http://example.com/support äquivalent zu http://example.com/index.php?section=support - was wohl genau das ist, was du erreichen möchtest, denn dadurch kannst du extern URIs der Form http://example.com/support nutzen. Dies kannst du leicht testen, indem du z.B. http://example.com/support in deinem Browser aufrufst.
Beachte auch, dass ausschliesslich aufgerufene URIs vor ihrer Weiterverarbeitung umschrieben werden. Insbesondere hat der Einsatz von mod_rewrite keinerlei Auswirkung auf die in ausgelieferten Dokumenten enthaltene URIs. Du bist selbst dafür verantwortlich, in deinen Webseiten das neue URI-Schema zu nutzen.
-
23. 01. 2012, 03:06 #5Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
Hallo Kugelfisch
Jetzt hab ic es verstanden hab es jett auch mal getestet zwa nur local aber wasja local geht muss ja auch aufm server dann funzen
und ich hab es definitiv miss verstanden da sieht man es mal immer wieder man lernt einfach nicht aus
Ich danke dir vielmals und wünsche noch nen schönen tag
-
11. 04. 2012, 20:14 #6Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
hallo allerseits
ich muss mich doch wohl oder übel nochmal melden denn ich brauch mal euren rat ich habe dank kugelfisch eine htaccess zusammen gestellt die auch bei mir lokal funktioniert.
mein problem ist das sie auf einem realen server nicht funktioniert mir is klar das auf dem server dann auch die mod_rewrite auf On oder 1 stehen muss was es auch tut und trotzdem bekomm ich nur die fehlermeldung request urlCode:# REWRITE SETTINGS RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^\w+$ index.php?page=$0&%{QUERY_STRING}
hier mal zum selber anschauen:
www.megacluster.my-dislike.com
wenn man jetzt aber einen direkten pfad:
http://www.megacluster.my-dislike.co...php?page=about
dann funzt es vlt weiß ja einer rat.
weiß jetzt nicht ob das relevent ist es handelt sich um einen russischen server bei timeweb
Danke schonmal
-
11. 04. 2012, 21:32 #7
Re: mod_rewrite htaccess
Die Zeile
in deinem Regelsatz ist suboptimal. Wenn du den Query-String erhalten möchtest, nutze das [QSA]-Flag:RewriteRule ^\w+$ index.php?page=$0&%{QUERY_STRING}
Siehe auch http://httpd.apache.org/docs/current....html#flag_qsa.Code:RewriteRule ^\w+$ index.php?page=$0 [QSA]
Dies wird jedoch keinen Einfluss auf die Funktionalität haben. Zu deinem konkreten Problem:
Überprüfe zunächst einmal, ob die htaccess-Datei auch tatsächlich verarbeitet wird, etwa durch Hinzufügen einer bekanntermassen nicht existenten Direktive (was, sofern die Datei verarbeitet wird, zu einem 500 Internal Server Error führen wird). Wird die Datei nicht verarbeitet, überprüfe, ob ggf. die Verarbeitung von per-Directory-Konfigurationsdateien per AllowOverride-Direktive verboten wurde.
Wenn die Datei korrekt verarbeitet und dennoch keine Umschreibung vorgenommen wird, aktiviere testweise einmal das Rewrite-Log auf der höchsten Stufe (siehe http://httpd.apache.org/docs/current...e.html#logging) und überprüfe, weshalb deine Regeln nicht greifen.
-
11. 04. 2012, 22:41 #8Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
danke werde das gleich mal testen
muss ich um den rewrite_log auf höchster stufe root zugriff haben ?
denn ich habe keinen
-
11. 04. 2012, 23:23 #9
Re: mod_rewrite htaccess
Nicht unbedingt, aber zumindest Zugriff auf die globale Apache-Konfiguration oder die VirtualHost-Konfiguration deiner Website. Wenn die Konfigurationsdateien nur für root schreibbar sind, benötigst du root-Zugriff. Bei normalem Webspace hast du üblicherweise keinen Zugriff auf diese Konfigurationsdateien.
-
12. 04. 2012, 09:16 #10Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
ok danke
dann hab ich natürlich ein problem denn ich habe keinen root zugriff und hab auch in der oberfläsche keine apache einstellungen oder sonstiges
dann müsste ich mich an den support von dennen wenden jetzt müsste ich nur wissen welche einstellungen ich dort alle angeben muss damit das auch zu 100% funktioniert wäre nett wenn du mir eine liste erstellen könntest die ich denn mitteilen könnte um alles gangbar zu machen
Mfg
-
12. 04. 2012, 19:35 #11
Re: mod_rewrite htaccess
Ohne die Konfiguration zu kennen, lässt sich auch nicht präzise sagen, welche Einstellungen verändert werden müssen, damit deine .htaccess-Datei als per-Directory-Konfiguration verarbeitet wird und die RewriteRules greifen. Hast du inzwischen einmal getestet, ob die .htaccess-Datei überhaupt vom Webserver verarbeitet wird? Wenn ja, greift eine testweise eingefügte triviale Regel?
-
12. 04. 2012, 21:20 #12Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
-
12. 04. 2012, 21:43 #13
Re: mod_rewrite htaccess
Überprüfe, ob eine stark vereinfachte htaccess-Datei mit einem aus einer einzigen Regel bestehenden Rewrite-Regelsatz greift. Zum Beispiel müsste
alle Requests, deren URI-Pfade die Zeichenkette foo enthalten, auf http://www.megacluster.my-dislike.com/test.php umschreiben (hinterlege dort eine Datei mit einem eindeutigen Inhalt).Code:RewriteEngine On RewriteRule foo /test.php
-
13. 04. 2012, 10:53 #14Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
da bekomm ich wieder ein error
aber mal so am rande ich weiß nicht ob das wichtig ist
ich benutze auf einen page_switcher:
der mir den pfad so ausgibt das ich am ende .php machen mussPHP-Code:<?
error_reporting(0);
// Page Array
$pages = array
(
'about',
'activate',
'admin',
'agb',
'change',
'contact',
'customer',
'download',
'index',
'intern',
'login',
'logout',
'news',
'password',
'premium',
'register',
'reset',
'search',
'upload'
);
// Check if the site exists
if( isset($_GET['page']) && !empty($_GET['page']) )
{
if( in_array($_GET['page'], $pages) )
include('pages/' . $_GET['page'] . '.php');
else
include('pages/' . 'index.php');
} else {
include('pages/' . 'index.php');
}
danke
-
18. 04. 2012, 17:36 #15Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
keiner ne lösung ?
-
19. 04. 2012, 17:59 #16
Re: mod_rewrite htaccess
Wenn auch der von mir gepostete, aus bloss einer einzigen Regel bestehende Regelsatz keine Wirkung zeigt (also z.B. http://www.megacluster.my-dislike.com/test.php unter http://www.megacluster.my-dislike.com/foo verfügbar macht), funktioniert auf deinem Webserver offenbar mod_rewrite nicht korrekt. Dann kann dir lediglich der Support deines Hosters helfen.
Allerdings kann ich das aktuell nicht beobachten, es tritt ein Umleitungsfehler (d.h. eine unendliche Umleitungsscheife) auf. Hast du die Konfiguration inzwischen wieder verändert? Sind (anders als empfohlen) noch weitere Regeln gleichzeitig aktiv?
-
19. 04. 2012, 20:15 #17Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
ja hatte ich wegen einer https weiterleitung was auch nicht ganz will
aber hab das erstmal wieder rückgängig gemacht so das du es dir nochmal ansehen kannst.
hab in der test.php einfach mal hallo welt geschrieben und beides sowohl test.php also auch /foo ist erreichbar
solangsam weiß ich echt nicht mehr weiter und ich hab meiner verzeichnisse alle in dem ordner pages die über einen page_switcher wie oben schon gepostet in die index includiert werden.
Danke schonmal hoffe du weiß weiter
-
20. 04. 2012, 00:07 #18
Re: mod_rewrite htaccess
Dies widerspricht zwar deinem ersten Test, doch ich kann das Verhalten bestätigen und es zeigt auf, dass mod_rewrite offenbar korrekt funktioniert.
Da dein vollständiger Regelsatz nicht funktioniert, musst du diesen nun schrittweise reduzieren und das Problem einschränken. Dass du kein RewriteLog verwenden kannst, erleichtert die Fehlersuche natürlich nicht. Hat ein Regelsatz, der ausschliesslich aus
besteht eine Wirkung? Wenn nicht, könntest du testweiseCode:RewriteEngine On RewriteRule ^\w+$ /index.php?page=$0 [QSA]
nutzen und überprüfen, welche page-Parameter übergeben werden (testweise im index.php-Skript ausgeben lassen). Möglicherweise ist die RewriteBase nicht korrekt konfiguriert.Code:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*$ index.php?page=$0 [QSA]
-
20. 04. 2012, 11:44 #19Mitglied
(Threadstarter)
- Registriert seit
- May 2008
- Beiträge
- 122
Re: mod_rewrite htaccess
dieser regelsetz hier greift und funzt ich muss jetzt auch net ganz verstehen warum aber bin schon mal froh das das endlich funzt dank deiner hilfe jetzt muss ich nur noch das problem mit dem https umsetzen dann is das perfekt

danke dir vielmals für deine hilfe
PS: für was war bei mir in der htaccess eigentlich das rewritebase ?
-
20. 04. 2012, 13:59 #20
Re: mod_rewrite htaccess
Weshalb für einen URI wie http://www.megacluster.my-dislike.com/about diese Regel greift, nicht aber(?)
erschliesst sich mir ebenfalls nicht. Schliesslich müssten beide auf den Pfad-Bestandteil about passen. Wie lautet der page-Parameter, der an das index.php-Skript übergeben wird? `about`? Greift eine Regel wieCode:RewriteRule ^\w+$ index.php?page=$0 [QSA]
ebenfalls nicht?Code:RewriteRule ^[A-Za-z]+$ index.php?page=$0 [QSA]
Meine Test-Regel (mit .* als regulären Ausdruck für den URI-Pfad) ist nur bedingt für den Produktiveinsatz geeignet, da sie URIs wie http://www.megacluster.my-dislike.com/foo/bar ebenfalls umschreibt, sofern sie nicht auf eine physisch existente Datei zeigen. Das ist insbesondere dann problematisch, wenn du auch andere Umschreibungen vornehmen lassen möchtest.
Auch ist unschön, dass dein Skript (wie aktuell der Fall) im Falle eines ungültigen page-Parameters die Startseite anstelle einer Fehlerseite ausliefert, da die Startseite dann unter diversen URIs (ggf. sogar mit unterschiedlichen Basis-URIs) zugänglich ist. Im Falle eines ungültigen (aber nicht leeren) page-Parameters sollte dein Skript eine passende Fehlermeldung mit Statuscode 404 (Not Found) ausliefern.
Um das Pfad-Präfix für die neuen URIs festzulegen, siehe http://httpd.apache.org/docs/2.2/mod...ml#rewritebase. / scheint in deinem Fall durchaus passend zu sein, ist jedoch bei deiner Webserver-Konfiguration nicht erforderlich.
-


Zitieren

mehr lesen...







Resident Evil 6 erscheint in...
Heute, 15:21 in gulli:news