PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mod_rewrite lokal nutzen?


c4
28.07.2003, 22:19:41
Moin,

hatte meine HP vor kurzem um die Funktionalität von mod_rewrite erweitert, allerdings funzt es nur online.
Es scheitert momentan an der .htaccess:
RewriteRule !(flashhasser|dbcf|gsgs|wfst)|.(gif|jpg|png|css|zip|js|htm|log|ico|txt |php)$ /is/htdocs/xxxxx/www.dbcf.de/mod_rewrite.php
Das klappt online ja 1a, aber wie mache ich jetzt eine Fallunterscheidung, dass, wenn ich lokal arbeite er ein anderes Verzeichnis nutzen soll?


MfG




Edit: Ich flehe um Gnade! Da haben wir jetzt schon ein Forum für Apache und wo schreibe ich es hin?? Dumm, dumm, dumm!

Damir
29.07.2003, 08:24:36
Hi C4,
das Thema hatten wir erst gerade;-))
Ist das nicht ein Apache-Thema ;-) ???

Schau mal hier, hast sicherlich eine Kleinigkeit vergessen:
http://www.aboutwebdesign.de/awd/content/1042302787.shtml

Bye Damir

c4
29.07.2003, 08:28:21
Ja, das mit Apache-Forum fiel mir noch vor Deinem Beitrag ein....
Bist doch Admin, verschieb es doch. :)

Das Thema letztens enthielt nichts, was sich hierfür gebrauchen ließe.

Die Seite scheint auch einen brauchbaren Abschnitt zu enthalten. Werde ich heute Abend mal testen. Danke dafür.

c4
29.07.2003, 19:18:10
Man wie peinlich!! mod_rewrite wurde gar nicht geladen. :)

Damit klappt's nun:
RewriteEngine on

RewriteCond %{HTTP_HOST} (.*)dbcf.de(.*)

RewriteRule !(flashhasser|dbcf|gsgs|wfst)|.(gif|jpg|png|css|zip|js|htm|log|ico|txt |php)$ /is/htdocs/xxxxx/www.dbcf.de/mod_rewrite.php [L]

RewriteCond %{HTTP_HOST} (.*)meine(.*)
RewriteRule !(meine|flashhasser|dbcf|gsgs|wfst)|.(gif|jpg|png|css|zip|js|htm|log|i co|txt|php)$ /dbcf/mod_rewrite.php [L]

Ben20
30.07.2003, 09:27:21
Blöde Frage, aber was macht das ganze eigentlich (aus dem Quellcode werd ich nicht ganz schlau) Soweit ich das entziffer kannst leitest Du die Domains flashhasser, dbcf, gsgs und wfst *g* nach mod_rewrite.php um, richtig?

c4
30.07.2003, 09:42:52
Also was ich mit diesem regexp ausdrücke frage ich mich auch. Irgendwie klappt es aber. :)
Es heißt wohl soviel, wie "Wenn im URI flashhasser, dbcf, ... nicht vorkommt oder die Dateiendung .gif, .jpg, ... ist, dann gehe weiter zur mod_rewrite.php Das [L] heißt, dass das die letzte Ersetzungsregel ist, die bearbeitet werden soll.
Ach ja, die RewriteCond testet, ob die Bedingung erfüllt ist. Wenn ja, dann wird die nächste Ersetzungsdings ausgeführt. Das war mit der entscheidende Punkt für mein lokal-online-Problem.

In der mod_rewrite.php steht dann bloß das:<?php
if (strstr(strtolower($_SERVER["SERVER_NAME"]),"dbcf.de")) {
$server='online';
$max=3;
}
else {
$server='local';
$max=4;
}


$url=explode('/', strip_tags($_SERVER['REQUEST_URI']));
if (count($url)>$max) {
if ($server=='online') {
header('Location: http://dbCF.de/');
}
else {
header('Location: http://meine/dbCF/');
}
exit;
}
else {
$i=count($url);
while ($i>=0) {
if (substr($url[$i], 0, 2)=='t_') {
$t=substr($url[$i], 2, strlen($url[$i]));
$subdir=true;
break;
}
$i--;
}

$mod_rew=true;
if ($server=='online') {
include('http://dbCF.de/index.php?subdir='.$subdir.'&topic='.$t);
}
else {
include('http://meine/dbcf/index.php?subdir='.$subdir.'&topic='.$t);
}
exit;
}
?> Die Funktweise könnte einleuchtend sein.

Am Ende macht das alles nichts anderes, als das es virtuelle Verzeichnisangaben in umleitet. Also gibst Du z.B. http://dbCF.de/t_riesenrechner/ ein, dann wird man intern an http://dbCF.de/index.php?topic=riesenrechner weitergeleitet. Das hat enorme Vorteile bei der Merkbarkeit (feines Wort) von Links und Suchmaschinen erfreuen sich auch daran.
Was ich auch richtig fein finde ist, dass die alten Links auch weiterhin funktionieren, also gibt es keine toten Links.

Ben20
30.07.2003, 09:45:40
Das ist ja sehr interessant, ich muss mich auch irgendwann mal mit mod_rewrite auseinander setzen, die ? in den Urls loszuwerden wäre schon praktisch! Dank dir!

c4
30.07.2003, 09:47:06
Kein Problem.
Ist echt enorm, was man mit dieser .htaccess so alles anstellen kann.

Du solltest Dich aber nur dann ran wagen, wenn es egal ist, dass Du die halbe Nacht dafür vorm Rechner hockst.... ;)

Fuchs
17.08.2003, 20:57:32
Original geschrieben von _c_4_
Damit klappt's nun:
RewriteEngine on

RewriteCond %{HTTP_HOST} (.*)dbcf.de(.*)
RewriteRule !(flashhasser|dbcf|gsgs|wfst)|.(gif|jpg|png|css|zip|js|htm|log|ico|txt |php)$ /is/htdocs/xxxxx/www.dbcf.de/mod_rewrite.php [L]

RewriteCond %{HTTP_HOST} (.*)meine(.*)
RewriteRule !(meine|flashhasser|dbcf|gsgs|wfst)|.(gif|jpg|png|css|zip|js|htm|log|i co|txt|php)$ /dbcf/mod_rewrite.php [L]


Waere das nicht einfacher:

RewriteEngine on
RewriteRule !(flashhasser|dbcf|gsgs|wfst)|.(gif|jpg|png|css|zip|js|htm|log|ico|txt |php)$ ./mod_rewrite.php [L]


Also was ich mit diesem regexp ausdrücke frage ich mich auch. Irgendwie klappt es aber. :)
Es heißt wohl soviel, wie "Wenn im URI flashhasser, dbcf, ... nicht vorkommt oder die Dateiendung .gif, .jpg, ... ist, dann gehe weiter zur mod_rewrite.php Das [L] heißt, dass das die letzte Ersetzungsregel ist, die bearbeitet werden soll.
Ach ja, die RewriteCond testet, ob die Bedingung erfüllt ist. Wenn ja, dann wird die nächste Ersetzungsdings ausgeführt. Das war mit der entscheidende Punkt für mein lokal-online-Problem.

In der mod_rewrite.php steht dann bloß das:
<?php
if (strstr(strtolower($_SERVER["SERVER_NAME"]),"dbcf.de")) {
$server='online';
$max=3;
}
else {
$server='local';
$max=4;
}


$url=explode('/', strip_tags($_SERVER['REQUEST_URI']));
if (count($url)>$max) {
if ($server=='online') {
header('Location: http://dbCF.de/');
}
else {
header('Location: http://meine/dbCF/');
}
exit;
}


Das koennte man auch mit substr_count loesen.


Die Funktweise könnte einleuchtend sein.

Am Ende macht das alles nichts anderes, als das es virtuelle Verzeichnisangaben in umleitet. Also gibst Du z.B. http://dbCF.de/t_riesenrechner/ ein, dann wird man intern an http://dbCF.de/index.php?topic=riesenrechner weitergeleitet. Das hat enorme Vorteile bei der Merkbarkeit (feines Wort) von Links und Suchmaschinen erfreuen sich auch daran.
Was ich auch richtig fein finde ist, dass die alten Links auch weiterhin funktionieren, also gibt es keine toten Links.
[/QUOTE]
Ich wuerd's so machen:
RewriteRule ^t_(.+)/? ./index.php?topic=$1 [last]

Nev
17.08.2003, 23:01:54
Hi @ll

Mod_rewite hat sehr gut eingesetzt werden um Suchmaschinen zu Täuschen.

Fast alle Suchmaschienen, meiden Seite die mit Parameter arbeiten.

Durch mod_rewirte kann man das Ändern.
ZB
domain.com/staubsauger

ist eigendlich
domain.com/index.php?cat=1

die vorgeträuschte Url bleibt im Browser stehn.

Weiter kann man so auch eine leserliche Url erzeugen, bzw. auch Werbung darüber laufen lassen.