• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mod_rewrite

Status
Für weitere Antworten geschlossen.

matcho

Mitglied
Hallo Freunde, ich möchte meine Internetpräsenz etwas suchmaschinenfreundlicher gestalten über mod_rewrite.

Leider wird die .htaccess (im root) anscheinend komplett ignoriert
laut provider, wird das modul geladen

folgender inhalt der .htaccess:

PHP:
RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/[^.]+$
RewriteRule ^([^/]*)(.*)$ /index.php?content=$1
Jemand nen Rat? :-?

/edit:
noch kleiner Zusatz:
meine Seiten werden über index.php?content=titel aufgerufen
also bspw: index.php?content=news
 
Hallo,

bei mir funktioniert der Code. Setz mal ans Ende der letzten Zeile noch ein [L,R=301] Dann siehste, wohin weitergeleitet wird.


Befindet sich die Seite denn auch im root-Directory? Wenn nicht füg mal noch
Code:
RewriteBase /pfad/zur/datei/
ein.


N43
 
funzt noch immer nicht :(

PHP:
RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/[^.]+$
RewriteBase /content/
RewriteRule ^([^/]*)(.*)$ /index.php?content=$1 [L,R=301]

also im root hab ich ne index.php liegen mit einer weiterleitung nach content

PHP:
<?
    Header("Location: http://www.mission-m-duplex.de/content/index.php");

?>
 
Ich hoffe du machst den header nur dann, wenn content nicht gesetzt ist -.-

Das Problem ist, wenn du / in der rewrite nutzt, kann es sein, dass du auf deine Ordner nicht mehr normal zugreifen kannst...
 
Ich hoffe du machst den header nur dann, wenn content nicht gesetzt ist -.-

Das Problem ist, wenn du / in der rewrite nutzt, kann es sein, dass du auf deine Ordner nicht mehr normal zugreifen kannst...

??
ich mache die weiterleitung, wenn www,mission-m-duplex,de/index.php aufgerufen wird

grund für die weiterleitung ist einfach nur die bessere übersicht (webserverstruktur)
 
Hallo,

kommt eigentlich ein Internal Server Error (500?), oder wird nur falsch weitergeleitet, oder kommt 'ne 404er Meldung?

Wenn der 500er kommt, dann hast du entweder 'nen Fehler in der .htaccess oder mod_rewrite ist nicht richtig gesetzt (zumindest meinen Erinnerungen nach).

Das RewriteBase sorgt dafür, ab welchem Verzeichnis mod_rewrite greift. Also bei deinem jetzigen würde mod_rewrite nur unter http://www.mission-m-duplex.de/content/ greifen.

Nehm zum Testen vl. auch mal die Weiterleitung raus.

N43
 
Wie willst du denn deine URL aussehen lassen ?

Irgendwie steige ich im Moment nicht hinter dein regulären Ausdruck ^^

^ = anfang
([^/]*) = geh zum letzten /
(.*)$ = alle restlichen Zeichen

Oder seh ich da gerade was falsch ?

Wenn ich den folgenden Code nutze, habe ich nen unlimited Redirect...

Code:
RewriteEngine   on
RewriteBase     /
RewriteRule     ^([^/]*)(.*)$           index.php?content=$1 [L,R=301]
 
ok weiterleitung rausgenommen und manuell www,mission-m-duplex,de/index.php probiert, ohne erfolg

ich dächte der aktuelle code macht aus meinen
.../index.php?content=title

www,mission-m-duplex,de/title
 
ok weiterleitung rausgenommen und manuell www,mission-m-duplex,de/index.php probiert, ohne erfolg

ich dächte der aktuelle code macht aus meinen
.../index.php?content=title

www,mission-m-duplex,de/title
Andersrum aus /title wird index.php?content=title

Der Code nimmt nur URLs, die in der Request Uri keinen Punkt enthalten. Wenn das zutrifft wird alles bis zum ersten / genommen, alles weitere wird ignoriert. Das (.*)$ könnte man auch weglassen.


N43
 
Code:
RewriteBase     /
RewriteRule     ^$              index.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      index.php?id=$1  [QSA,L]
RewriteRule     ^index.php$     index.php [L]

Das funktioniert so bei mir.

Code:
domain.de/test => index.php?id=test
 
so hier quasi in meinem fall:
PHP:
RewriteBase     /content
RewriteRule     ^$              index.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      index.php?content=$1  [QSA,L]
RewriteRule     ^index.php$     index.php [L]
 
also irgendwie muss es ja doch greifen, denn meine seiten kann ich nun mit

www,webdesign-4u,de/news
www,webdesign-4u,de/tuts
www,webdesign-4u,de/portfolio
(komma zwecks web 2.0 genutzt)
ansprechen

nur wenn ich über die navigationspunkte direkt gehe, bleibt
www,webdesign-4u,de/index.php?content=news
stehen

mögliche fehlerursache:
bekannt ist ja, dass htaccess vor php ausgeführt wird
und bei mir liegen meine inhaltsseiten im ordner root/content
die navigation wird aber aus root/inc/main_nav.inc.php eingelesen
:|

die aktuelle htaccess:
PHP:
RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/[^.]+$
RewriteRule ^([^/]*)(.*)$ /content/index.php?content=$1
 
Hallo,

die Links musst du selbst von Hand anpassen, oder du schreibst dir ein Script, dass du über die Ausgabe jagst und alle deine Links automatisch nach einem bestimmten Schema umwandelt.


N43
 
Hallo,

die Links musst du selbst von Hand anpassen, oder du schreibst dir ein Script, dass du über die Ausgabe jagst und alle deine Links automatisch nach einem bestimmten Schema umwandelt.


N43

mühsam, aber nun gehts
dachte dafür wäre eben mod_rewrite da, die urls automatisch umzuwandeln....
 
Macht er ja auch, nur andersrum als du dir das gedacht hast ;)

Die URLs sollen ja dadurch für den User besser lesbar werden, und wie du was intern machst, interessiert ja kaum einen von deinen Usern.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben