mod_rewrite

flor

Mitglied
PHP:
RewriteEngine on
Options +FollowSymLinks
RewriteBase /

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^start/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12&$13=$14&$15=$16&%1 [L]

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12&$13=$14&%1 [L]

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12&%1 [L]


RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&$5=$6&$7=$8&$9=$10&%1 [L]

# Bis hier gehen die Regeln ,von unten gesehen.

 RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&$5=$6&$7=$8&%1 [L]

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&$5=$6&%1 [L]



RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)/(.+)/(.+)\.html$ /index.php?$1=$2&$3=$4&%1 [L]

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/(.+)/(.+)\.html$ /index.php?$1=$2&%1 [L]


RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start\.html$ /index.php?%1 [L]

Der link geht noch:
HTML:
<a href http="/start/sector/loggin/gehe/zu/dem/punkt/hier/hin.html">XXX</a>

Wird der Link jetzt verlängert funktionieren die Regeln nicht mehr.

Ich habe schon etliches Probiert , alles ohne Erfolg.

Das einzige was geht ist wenn ich den Rest wieder als normale GET -variablen übergebe.

Hat vielleicht einer eine Idee ?

Danke.

mfg flor
 
Zuletzt bearbeitet:

flor

Mitglied
So geht es :
PHP:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^start/sector/(.+)/id/(.+)/name/(.+)/next/(.+)/ja/(.+)/gut/(.*)/$
/index.php?sector=$1&id=$2&name=$3&next=$4&ja=$5&gut=$6&%1 [L]

Aber gibt es keine Elegantere Lösung ?

mfg flor
 

Gumbo

Erfahrenes Mitglied
Verarbeite den angefragten Pfad besser mit PHP, denn „mod_rewrite“ erlaubt nur neun Rückreferenzen.
Code:
RewriteRule ^start(?:/[^/]+)*\.html$ /index.php [L]
PHP:
if( $args = preg_split('@/([^/]+/[^/]+)@', substr($_SERVER['REQUEST_URI'], 6, -5), null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) ) {
	foreach( $args as $arg ) {
		list($key, $val) = explode('/', $arg);
		$_GET[$key] = $val;
	}
}
var_dump($_GET);
 

flor

Mitglied
Hi,
ich muss sagen das ist "Spitze".

Das sollte mit in die "Tut`s".

Danke.

mfg flor

Ps: Ich habe gehört ab php 5xxx gibt es da noch eine andere Möglichkeit (?) .
 

flor

Mitglied
Hallo,
ich habe den Code jetzt noch erweitert, denn ich
behandele auch Get-Daten mit urlencode.

PHP:
if( $args = preg_split('@/([^/]+/[^/]+)@', substr($_SERVER['REQUEST_URI'], 6, -5), null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) ) {
    foreach( $args as $arg ) {
        list($key, $val) = explode('/', $arg);
        $_GET[$key] = htmlspecialchars(urldecode($val)) ;
    }
}
#Alt : $_GET[$key] = ($val) ;
#Neu:  $_GET[$key] = htmlspecialchars(urldecode($val)) ;

Meine Frage : Könnte das zu irgendwelchen Problemen führen ?

Danke.

mfg flor

Ps: Bei mir auf Localhost habe ich bis jetzt nichts negatives feststellen können. Und noch was dazu, mein Projekt läuft bis jetzt nur auf Localhost. Das ist das erste mal das ich in dieser Richtung (php/html/css/mysql) was Code.