Fabian St.: Probleme mit RewriteRule

Beitrag lesen

Hi wahsaga!

was bleibt dann als bedingung bei dir übrig?
^([a-z0-9]+)$
oder
^([a-z0-9]+) (ohne $ am ende)
?

In der Logs steht immer 'applying pattern ^([a-z0-9]+).html$ ...', sodass ich jetzt mal davon ausgehe, dass das $ stehenbleibt.

Nach dem Hochsetzten des LogLevels erhalte ich nun folgende Ausgaben (für die Anfrage http://localhost/~fabi/info/links.html ---> http://localhost/~fabi/info/index.php5?site=links):

127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (3) [per-dir /home/fabi/public_html/info/] strip per-dir prefix: /home/fabi/public_html/info/links.html -> links.html
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (3) [per-dir /home/fabi/public_html/info/] applying pattern '^([a-z0-9]+).html$' to uri 'links.html'
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (2) [per-dir /home/fabi/public_html/info/] rewrite links.html -> index.php5?site=links
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (3) split uri=index.php5?site=links -> uri=index.php5, args=site=links
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (3) [per-dir /home/fabi/public_html/info/] add per-dir prefix: index.php5 -> /home/fabi/public_html/info/index.php5
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (2) [per-dir /home/fabi/public_html/info/] trying to replace prefix /home/fabi/public_html/info/ with /~fabi/info
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (5) strip matching prefix: /home/fabi/public_html/info/index.php5 -> index.php5
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (4) add subst prefix: index.php5 -> /~fabi/info/index.php5
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82b8700/initial] (1) [per-dir /home/fabi/public_html/info/] internal redirect with /~fabi/info/index.php5 [INTERNAL REDIRECT]
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82c7978/initial/redir#1] (3) [per-dir /home/fabi/public_html/info/] strip per-dir prefix: /home/fabi/public_html/info/index.php5 -> index.php5
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82c7978/initial/redir#1] (3) [per-dir /home/fabi/public_html/info/] applying pattern '^([a-z0-9]+).html$' to uri 'index.php5'
127.0.0.1 - - [23/Mar/2005:00:08:35 +0100] [localhost/sid#80a0e48][rid#82c7978/initial/redir#1] (1) [per-dir /home/fabi/public_html/info/] pass through /home/fabi/public_html/info/index.php5

Die .htaccess ist dabei folgende:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /~fabi/info
RewriteRule ^([a-z0-9]+).html$ index.php5?site=$1 [L] [NS]

Wenn ich nun jedoch folgende .htaccess verwende, bleibt die rewrite_log leer und eine Anfrage von http://localhost/~fabi/info/links wird nicht an http://localhost/~fabi/info/index.php5?site=links weitergeleitet, sondern ich bekomme - wie gesagt - einen 404er: The requested URL /~fabi/info/links was not found on this server.

Options +FollowSymLinks
RewriteEngine On
RewriteBase /~fabi/info
RewriteRule ^([a-z0-9]+)$ index.php5?site=$1 [L] [NS]

meine theorie wäre:
wenn du die endung .html nicht in die bedingung einbeziehst - dann trifft die RewriteRule auch auf den _folgenden_ (internen) request zu - der geht nämlich auf index.php (plus query string, der beim rewriten aber unberücksichtigt bleibt).
(gut, der punkt passt da nicht wirklich rein in [a-z0-9]
aber zweite oben genannte variante ohne $ am ende könnte auch das erklären.)

also wird der (interne) request seinerseits wieder von der regel abgegriffen, und auf /index.php5?site=index.php weitergeleitet, etc. pp.
du hättest dich also in einem netten kleinen loop gefangen (unter der annahme, dass meine vermutung zutrifft).

Oh, ich glaube damit muss ich mich noch gründlicher auseinandersetzten... ;-)

versuche also mal, die Rule um das flag [L] oder auch [NS] zu ergänzen.

Wie du in obigen Beispielen sehen kannst, haben die beiden Flags _L_astRule und _N_o internal _S_ubrequest keine Wirkung :-/

Das komische ist, dass es auf dem Webspace funktioniert, nur eben lokal nicht auf meinem Rechner.

Grüße,
Fabian St.

--
Meine Website: http://fabis-site.net
--> XHTML, CSS, PHP-Formmailer, Linux
---------------------
fabi@erde ~# whatis spam
spam: nothing appropriate
---------------------
Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)