Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Url mit mod_rewrite ändern [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Url mit mod_rewrite ändern


 
marc75
22-10-2004, 13:04 
 
Voraussetzung mod_rewrite ist vorhanden und aktiv;


Warum Überhaupt der Aufwand?

ganz einfach, die Sumas mögen eher Url folgenden Formates:

www.domain.de/datei.htm

bei php sieht es meist so aus:

www.domain.de/datei.php?a=1&b=2


.htaccess

#muss ins root Verzeichnis

RewriteEngine on
Options +FollowSymlinks
RewriteBase /

RewriteRule ^datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2 [L]


Das [L] kommt hinter der letzten Anweisung in der .htaccess getrennt mit ein Leerschritt, ist optinal, und gibt an das die rules zu Ende sind.

www.domain.de/datei1-2.htm

der Aufruf dieser URL bringt jetzt das selbe zu Tage wie:

www.domain.de/datei.php?a=1&b=2

Im Quellcode müssen die Links jetzt halt noch angepasst werden das sie nach der php Abarbeitung so aussehen datei1-2.htm.

Beispiel:

//Normal
echo 'www.domain.de/datei.php?a='.$a_id.'&b='.$b_id;

//nach Anpassung
echo 'www.domain.de/datei'.$a_id.'-'.$b_id.'.htm';



Oder Ihr wollt statt

www.domain.de/datei.php?a=1&b=2

www.domain.de/datei/1/2/

.htaccess

RewriteEngine on
Options +FollowSymlinks
RewriteBase /

RewriteCond %{REQUEST_URI} datei/(.*)/(.*)/$
RewriteRule datei/(.*)/(.*)/$ /datei.php?a=$1&b=$2




Fehlerquellen
- .htaccess liegt im falschen Ordner
- 2 .htacces vorhanden, 1x root und 1x in unterordner wo die Datei raus aufgerufen wird.
- Die Pfade stimmen nicht, kommt öfter vor
- mod_rewrite nicht aktiv (siehe phpinfo)
- Namenskonflikte
- manche hoster benötigen absolute urls in der rule
- Datei Endung .htm und .html beachten

- Rangfolge in der .htacces bei gleichen dateinamen nicht beachtet.
Beispiel:


# Falsch
RewriteRule datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2
RewriteRule datei(.*)-(.*)-(.*).htm$ /datei.php?a=$1&b=$2&c=$3

# Richtig
RewriteRule datei(.*)-(.*)-(.*).htm$ /datei.php?a=$1&b=$2&c=$3
RewriteRule datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2




Bei weiteren Fragen, die Suchfunktion bemühen, es gibt hier noch ein extrem grosser Beitrag von Abraxax darüber.



NACHTRAG: hab noch zwei Fehlerquellen hinzugefügt.

Link zum Apache - mod_rewrite doc
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html

 
Benny-one
22-10-2004, 13:06 
 
:grin:

 
matz0r
22-10-2004, 23:29 
 
Hey, das is echt spitze :grin:

Das "Tutorial" ist zwar sehr klein, aber zeigt genau dass, was die meisten (wie ich sehen) wollten und net mehr :)

Danke!


gruß, matze


PS: Warum heißt dieser Smilie :grin: <- : g r i n : ?!? Müsste doch eher :thumbsup: heißen :P


EDIT: Das zweite funktioniert bei mir, aber das erste nicht? Gibts beim ersten keine RewriteCon?

 
matz0r
23-10-2004, 00:32 
 
Hab mir das nochmal um die Ohren geschlagen ...

So funktioniert es bei mir:


RewriteRule ^index(.*)-(.*)(\.html?)$ index.php?area=$1&action=$2 [L]


Das hier dürfte auch den meisten gefallen:

RewriteRule ^index,(.*),(.*),(.*)(\.html?)$ index\.php?a=$1&b=$2&c=$3 [L]

ergibt sowas:


http://www.lankreis.net/index,home,global,id.html

 
marc75
23-10-2004, 10:10 
 
hab vielleicht vergessen zu erwähnen,
die erste rule hat die endung .htm und nicht .html

 
matz0r
23-10-2004, 12:58 
 
Ne ne, das hab ich schon richtig gelesen.. Ging trotzdem nicht! Aber hab nun ja ne "eigene" Lösung!

Kann ich aber jetzt per RewriteCond erkennen ob der Link nur 1 Variable (global,home,x.html) oder 2 Variablen (global,home,x,y.html) hat?

Sonst müsste ich bei jedem Link alles einbauen:

global,home,0,0.html

anstatt

global,home.html



---------

ich dachte mir das so:

RewriteCond %{REQUEST_URI} (.*),(.*)(\.html?)$
RewriteRule ^(.*),(.*)(\.html?)$ index\.php?area=$1&action=$2

RewriteCond %{REQUEST_URI} (.*),(.*),(.*)(\.html?)$
RewriteRule ^(.*),(.*),(.*)(\.html?)$ index\.php?area=$1&action=$2&id=$3

Aber das funktioniert schonmal nicht ;)

 
matz0r
24-10-2004, 19:48 
 
Da ich mein beitrag nicht mehr editieren kann so:



RewriteRule ^(.*),(.*),(.*),(.*)(\.html?)$ index\.php?area=$1&action=$2&id=$3&id2=$4 [L]
RewriteRule ^(.*),(.*),(.*)(\.html?)$ index\.php?area=$1&action=$2&id=$3 [L]
RewriteRule ^(.*),(.*)(\.html?)$ index\.php?area=$1&action=$2 [L]


Damit funktioniet es :)

 
random
24-10-2004, 20:37 
 
Hatte da die tage auch mal was zu mod_rewrite verzapft.
Vielleicht findets ja jemand interessant.

 
Willy_Lernen
28-10-2004, 07:42 
 
php - nichts ist unmöglich! :) tolle sache. danke marc.

PS: Aber wenn ich eh nur die eingangssite in der suma sehen will, brauch i das net - oder?


lg, WL

 
wahsaga
28-10-2004, 12:07 
 
Original geschrieben von Willy_Lernen
PS: Aber wenn ich eh nur die eingangssite in der suma sehen will, brauch i das net - oder?
wenn eh nur die einstiegsseite in den SuMas zu finden ist, dann brauch i höchstvermutlich deine seite net.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:31 Uhr.