Subdomain plus Parameter

Eines der wichtigsten Anwendungsgebiete von mod_rewrite ist das umschreiben von dynamischen in statische URLs um "suchmaschinenfreundliche URLs" zu erzeugen. Aber was ist besser fürs Ranking? http://www.url.com/12_2.htm, http://www.url.com/url,12,2.htm oder doch lieber http://www.url.com/12/2/url/ Fragen zum URL-Design werden hier diskutiert.

Moderator: Super-Mod

Subdomain plus Parameter

Beitragvon MostWanted82 » 28.11.2009 18:19

Hi,
ich würde meine urls gerne suchmaschinenfreundlicher gestalten.
Meine Seite ist so aufgebaut, dass eigentlich immer die index.php aufgerufen wird, der parameter page= gibt an welcher inhalt anzuzeigen ist.

ich würde gerne folgende urls verwenden
pages.domain.de/help/ -> www.domain.de/index.php?page=help

dazu habe ich folgenden mod_rewrite gebastelt

Code: Alles auswählen
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^pages\.domain\.de
RewriteRule ^([^/]*)$ /domain/index.php?page=$1 [NC]


jetzt würde ich gerne eventuell zusätzliche parameter auchnoch verschönern

z.b. eine bisherige url wäre
www.domain.de/index.php?page=locations&id=99&monat=8

jetzt würde ich anstatt dieser url lieber eine in folgender Form verwenden:
pages.domain.de/locations/id_99/monat_8/

wie kann ich die parameter "id_99" bzw beliebige andere in diese urls umwandeln?
also es sollen eine beliebige anzahl von parameter/wert paaren umgewandelt werden und an die url angehängt werden.

Bin für jede Hilfe Dankbar.

P.S. wie sieht die url nach obengenannter Regel aus? gibt es eine möglichkeit mir diese anzuzeigen?
Zuletzt geändert von MostWanted82 am 03.12.2009 20:17, insgesamt 1-mal geändert.
MostWanted82
.
.
 
Beiträge: 5
Registriert: 28.11.2009 13:13

Beitragvon Gumbo » 03.12.2009 19:28

Das einfachste wäre wohl, wenn du die Anfrage mit PHP parsen würdest (siehe $_SERVER['REQUEST_URI']).
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon MostWanted82 » 03.12.2009 20:27

Gumbo hat geschrieben:Das einfachste wäre wohl, wenn du die Anfrage mit PHP parsen würdest (siehe $_SERVER['REQUEST_URI']).


Das wäre sicherlich eine möglichkeit, aber ich bin davon ausgegangen, dass mod_rewrite das auch kann, und vermutlich um einiges performanter als PHP dazu in der Lage ist.

Unter http://www.modrewrite.de/foren/ftopic82.html bin ich ja schon auf das Beispiel gestoßen

Punkt 7.5
Ein Aufruf von /index,get1_val1,get2_val2,get3_val3.html ---soll--in--> /index.php?get1=val1&get2=val2&get3=val3 umgewandelt werden:
Code: Alles auswählen
RewriteEngine on
RewriteRule ^([^/,.]+),([^/_]+)_([^/,.]+)([^/.]*)(\.html)?$ $1$4?$2=$3 [QSA,N]
RewriteRule ^([^/.]+)$ /$1.php [L]




hatte versucht diese Regel anzupassen indem ich die "," aus der Regel entfernt habe, aber das hat natürlich nicht zum gewünschten Erfolg geführt.

Meine Regel sah dann so aus:
Code: Alles auswählen
RewriteEngine on
RewriteRule ^([^/.]+)/([^/_]+)_([^/.]+)([^/.]*)(\.html)?$ $1$4?$2=$3 [QSA,N]
RewriteRule ^([^/.]+)$ /$1.php [L]


Was mache ich falsch?
MostWanted82
.
.
 
Beiträge: 5
Registriert: 28.11.2009 13:13

Beitragvon Gumbo » 04.12.2009 08:59

Da PHP sowieso der Empfänger der Anfrage sein wird, ist macht es wohl keinen Unterschied. PHP ist aber sprachlich weit aus mächtiger als mod_rewrite.
Code: Alles auswählen
RewriteRule ^([^/_.]+)/([^/_]+)_([^/]+)/(.*)$ /$1$4?$2=$3 [QSA,N]
RewriteRule ^([^/_.]+)/$ $1.php [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon MostWanted82 » 04.12.2009 13:34

Das hatte leider net so ganz funktioniert, habs jetzt wie folgt gelöst:

.htaccess
Code: Alles auswählen
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.de [NC]
RewriteCond %{REQUEST_URI} ^pages/.*$ [NC,OR]
RewriteCond %{REQUEST_URI} ^locations/.*$ [NC]
RewriteRule .*$ /verzeichnis/index.php [L]


index.php:
Code: Alles auswählen
function url_rewrite()
{
   $request = substr($_SERVER[REDIRECT_URL],1);
   if(substr($request,strlen($request)-5,5)=='.html') $request=substr($request,0,strlen($request)-5);
   
   $parameter = explode('/',$request);
   if($parameter[0]=='pages'){
      $_GET['page']=$parameter[1];
      array_splice($parameter, 0, 2);
   }
   else if($parameter[0]=='locations'){
      $_GET['page']='location';
      array_splice($parameter, 0, 1);
   }
   foreach ($parameter as $value)
   {
      $splits=explode('-',$value,2);
      if(count($splits)==2) $_GET[$splits[0]]=$splits[1];
   }
}


Trotzdem Dnke Gumbo
MostWanted82
.
.
 
Beiträge: 5
Registriert: 28.11.2009 13:13


Zurück zu URL-Design

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron