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

Rewrite: 2 Fragen

molex

Neues Mitglied
Hallo zusammen

Ich programmiere mir im Moment ein Seitensystem. Die Seite wird standardmässig so aufgerufen:

http://www.???.com/index.php?page=startseite

Durch googlen habe ich folgende .htaccess Code gefunden, um das ganze etwas schöner darzustellen:

Code:
RewriteRule ^([^/\.]+)$ index.php?page=$1 [L,QSA]

Nun kann ich auf mit folgendem Aufruf auf die Seite zugreiffen:

http://www.???.com/startseite

Nun, zu meinem 2 Problemen:

1. Problem:
Mit Unterseiten klappt es noch nicht ganz.

http://www.???.com/seite1/unterseite1 => http://www.???.com/index.php?page=unterseite 1

Kann ich via ModRewrite angeben, dass er quasi gleich vorgehen soll wie oben, jedoch nur den Wert nach dem letzten / nehmen soll?

2. Problem:
Ich möchte die URLs eigentlich in folgendem Format:

http://www.???.com/startseite/
http://www.???.com/seite1/unterseite1/

Ich habe mir bereits die Finger wund gegoogelt, jedoch kriege ich von meinem Apache Webserver immer nur 404er Errors..

Hoffe ihr könnt mir helfen :)

Danke und Gruss,
molex
 
Zuletzt bearbeitet:
Hallo,

ach so,
dann versuche das mal so:
Code:
# wenn es auch kein Ordner ist
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule \/(\.)*$ index.php?param1=$1 [L,QSA]

Da bekommst aber ein Problem, das ich selber auch noch nicht gelöst bekommen.
Der Pfadangaben von js css und Bilder passen natürlich nicht da der Browser denkt das eine ebenne tiefer bist nämlich in seit1.
http://www.???.com/seite1/unterseite1

Habe mich aber noch nicht getraut hier zu fragen aber vielleicht wird das hier gelösst
Cheffchen
 
Code:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Und in den HTML-Head:
HTML:
    <base href="http://localhost/pfadzumprojekt/" />

@Cheffchen: Nur Mut, wir beißen nicht. ;)
 
Hallo zusammen

Ich habe in meiner .htaccess nun folgenden Code:

Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule \/(\.)*$ index.php?page=$1 [L,QSA]

Nachdem setzten des base Meta Tags, sieht die Seite auch wieder "etwas" schöner aus :D

Nur wird der Page Parameter irgendwie nicht richtig übertragen. Wenn ich auf der index.php ein var_dump($_GET['page']) einbaue, kriege ich immer einen leeren String zurück.

Egal ob ich die Seite mit http://www.???.com/seite1/ oder http://www.???.com/seite1/unterseite1/

Danke euch fürs helfen :)

Gruss,
molex
 
Hallo,

dann versuch mal das

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

Cheffchen
 
Hallo,

is ja klar das dies nicht passt, RewriteRule findet ja kein treffe da am ende ein / ist :O).
Versuche mal mit OR, frage mich jetzt aber nicht ob das jetzt da 100% richtig steht :O)

Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /(.*)$ index.php?page=$1 [L,QSA,OR]
RewriteRule /(.*)/$ index.php?page=$1 [L,QSA]
Cheffchen
 
Verschoben aus dem anderen Thread:

Tu dir einen Gefallen und zerleg den Request URI mit PHP.

.htaccess

Code:
RewriteEngine On

# If a resource exists, serve it

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# Otherwise, redirect to index file

RewriteRule ^.*$ index.php [NC,L]

index.php

PHP:
<?php

$basePath     = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$requestPath  = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$relativePath = substr($requestPath, strlen($basePath));

$pathParts = explode('/', trim($relativePath, '/'));

var_dump($basePath, $requestPath, $relativePath, $pathParts);

Beispielausgabe bei mir:

Code:
string '/nb/x' (length=5)

string '/nb/x/abc/def/ghi' (length=17)

string '/abc/def/ghi' (length=12)

array
  0 => string 'abc' (length=3)
  1 => string 'def' (length=3)
  2 => string 'ghi' (length=3)
 
Zurück
Oben