You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Christopher Gerharz <li...@cgerharz.de> on 2006/12/05 03:32:28 UTC

Re: [OT?] mod_rewrite / Reg-Ex

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Sebastian,

Sebastian Kayser wrote:
[...]

danke fuer Deinen Tipp.
Das Logfile (die richtige Anweisung lautet RewriteLog - ohne -File) hat
mich auf die Spur gebracht, dass die Slashes am Anfang - warum auch
immer - nicht mitgematcht werden.

So komme ich zu folgender funktionierenden RegEx:

> RewriteRule ^(.+)/([a-z]+)-(.+)-.*\.html$ /landing.php?tab=$1&module=$2&param=$3
> RewriteRule ^(.+)/([a-z]+)-.*\.html$ /landing.php?tab=$1&module=$2
> RewriteRule ^(.+)/([a-z]+).html$ /landing.php?tab=$1&module=$2

Das hat zwar immer noch nicht ganz den gewuenschten Zweck, da in manchen
Faellen Parameter abgeschnitten werden, aber das ist jetzt noch bisschen
Tueftelei. ;)

Danke vielmals!!

> 
> Sebastian

Christopher
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)

iD8DBQFFdNo86k8b5IOi9YMRAuN+AJ4t/b5iIkgc5PMtrCXsXn59V/cR8QCgvBe3
CQ75ooxmMCtPVyCE28IQRH8=
=uiy3
-----END PGP SIGNATURE-----

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: [OT?] mod_rewrite / Reg-Ex

Posted by Max Dittrich <ma...@t-online.de>.
Hi,

Christopher Gerharz schrieb:
> 
> Sebastian Kayser wrote:
> [...]
> 
> danke fuer Deinen Tipp.
> Das Logfile (die richtige Anweisung lautet RewriteLog - ohne -File) hat
> mich auf die Spur gebracht, dass die Slashes am Anfang - warum auch
> immer - nicht mitgematcht werden.

Die URL auf die der reguläre Ausdruck angewendet wird ist bei 
RewriteRules im Serverkontext (VirtualHost) und bei Verzeichniskontexten 
(Directory, .htaccess) unterschiedlich:

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule

Wie Du selber gesehen hast, fehlt im Verzeichniskontext mindestens der 
führende "/" - nämlich der Verzeichnisprefix.

> 
> So komme ich zu folgender funktionierenden RegEx:
> 
>> RewriteRule ^(.+)/([a-z]+)-(.+)-.*\.html$ /landing.php?tab=$1&module=$2&param=$3
>> RewriteRule ^(.+)/([a-z]+)-.*\.html$ /landing.php?tab=$1&module=$2
>> RewriteRule ^(.+)/([a-z]+).html$ /landing.php?tab=$1&module=$2
> 
> Das hat zwar immer noch nicht ganz den gewuenschten Zweck, da in manchen
> Faellen Parameter abgeschnitten werden, aber das ist jetzt noch bisschen
> Tueftelei. ;)

Da könnte Dir das Flag [QSA] am Ende Deiner RewriteRule weiterhelfen. 
Dies übernimmt den Querystring aus der eigentlichen Anfrage und vereint 
ihn mit den Parametern aus Deiner Ersetzung.

Grüsse,
.max


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------