Autor Zpráva
Jamaz
Profil
Dobrý den,

prosím o radu ohledně mod_rewrite logu.

Začínám pracovat s mod_rewrite. Vytvořil jsem první pravidla do httpd.conf a zapl rewritelog. Googloval jsem, ale nenašel jsem jaký je formát rewritelog-u.

Zajímalo by mě:
a) jaký je formát rewritelog
b) co znamenají následující hlášky a
c) jestli je ideální/nezbytné, že se v logu zobrazují záznamy:
"pass through"
"trying to replace prefix"
"internal redirect with"
"escaping ... for redirect"

--- Výtažek z httpd.conf: ---
RewriteLog logs/mod_rewrite.log
RewriteLogLevel 9

<Directory "D:/www/evo2">
# Zapnutí mod_rewrite
# (je třeba v jiné části odkomentovat "LoadModule rewrite_module modules/mod_rewrite.so"
RewriteEngine On

# Určení základu přepsaných URI
RewriteBase /evo2

#Urychleni prochazeni pravidel - vyskoceni co nejdriv to jde
# pokud je k dispocici primo soubor bez prepisovani, tak ho vykonej a neprepisuj nic
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

#Oprava/doplnění URI o chybějící ukončovací lomítka:
# Pro zde konfigurovaný <Directory ...>
RewriteRule ^D:/www/evo2$ /evo2/ [R=301,QSA,L]
# Pro ostatní adresáře
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R=301,QSA,L]

#Sjednocení URI tak, aby vždy končily lomítkem (z důvodu SEO optimalizace, neduplicitního obsahu)
RewriteRule ^(.+[^/])$ $1/ [R=301,QSA,L]

# Vlastní požadované přeložení adres
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ index.php?parametr1=$1&parametr2=$2&parametr3=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/$ index.php?parametr1=$1&parametr2=$2 [L,QSA]
RewriteRule ^([^/]+)/$ index.php?parametr1=$1 [L,QSA]
</Directory>

--- Výtažek z mod_rewrite.log ---
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir -> subdir
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] applying pattern '.*' to uri 'subdir'
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (4) RewriteCond: input='D:/www/evo2/subdir' pattern='-f' => not-matched
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir -> subdir
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] applying pattern '^D:/www/evo2$' to uri 'subdir'
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir -> subdir
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] applying pattern '^(.+[^/])$' to uri 'subdir'
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (4) RewriteCond: input='D:/www/evo2/subdir' pattern='-d' => matched
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (2) [per-dir D:/www/evo2/] rewrite subdir -> subdir/
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (3) [per-dir D:/www/evo2/] add per-dir prefix: subdir/ -> D:/www/evo2/subdir/
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (2) [per-dir D:/www/evo2/] explicitly forcing redirect with http://localhost/D:/www/evo2/subdir/
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (2) [per-dir D:/www/evo2/] trying to replace prefix D:/www/evo2/ with /evo2
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (5) strip matching prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (4) add subst prefix: subdir/ -> evo2/subdir/
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (1) [per-dir D:/www/evo2/] escaping http://localhost/evo2/subdir/ for redirect
127.0.0.1 - - [27/Nov/2005:06:08:09 +0100] [localhost/sid#2cbde8][rid#10e1cc8/initial] (1) [per-dir D:/www/evo2/] redirect to http://localhost/evo2/subdir/? [REDIRECT/301]
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '.*' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (4) RewriteCond: input='D:/www/evo2/subdir/' pattern='-f' => not-matched
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '^D:/www/evo2$' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '^(.+[^/])$' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '^(.+[^/])$' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '^([^/]+)/([^/]+)/([^/]+)/$' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '^([^/]+)/([^/]+)/$' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/subdir/ -> subdir/
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] applying pattern '^([^/]+)/$' to uri 'subdir/'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (2) [per-dir D:/www/evo2/] rewrite subdir/ -> index.php?parametr1=subdir
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) split uri=index.php?parametr1=subdir -> uri=index.php, args=parametr1=subdir
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (3) [per-dir D:/www/evo2/] add per-dir prefix: index.php -> D:/www/evo2/index.php
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (2) [per-dir D:/www/evo2/] trying to replace prefix D:/www/evo2/ with /evo2
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (5) strip matching prefix: D:/www/evo2/index.php -> index.php
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (4) add subst prefix: index.php -> /evo2/index.php
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10d8d80/initial] (1) [per-dir D:/www/evo2/] internal redirect with /evo2/index.php [INTERNAL REDIRECT]
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10daa78/initial/redir#1] (3) [per-dir D:/www/evo2/] strip per-dir prefix: D:/www/evo2/index.php -> index.php
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10daa78/initial/redir#1] (3) [per-dir D:/www/evo2/] applying pattern '.*' to uri 'index.php'
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10daa78/initial/redir#1] (4) RewriteCond: input='D:/www/evo2/index.php' pattern='-f' => matched
127.0.0.1 - - [27/Nov/2005:06:10:32 +0100] [localhost/sid#2cbde8][rid#10daa78/initial/redir#1] (1) [per-dir D:/www/evo2/] pass through D:/www/evo2/index.php
--- END ---

Budu vděčný za jakoukoliv radu, jak zápis pro rewrite_mod optimalizovat. Poradíte prosím někdo?

Jamaz
Kajman_
Profil *
Já se prostě snažil, aby těch řádku v logu bylo co nejméně - tedy aby apache musel procházet co nejméně pravidel a podmínek. Takže s překladem nepomůžu :-(
Jamaz
Profil
Děkuju za tuhle větu. Snažit se tedy o co nejméně podmínek...

Pokud napíšu do httpd.conf všechny podmínky ideálně a nastavím (v ostrém provozu) RewriteLogLevel 1, tak by měl RewriteLog prázdný?

Aneb je rewritelog obdoba access.log nebo error.log?
Yuhů
Profil
já hlavně jaksi netuším, k čemu je rewrite log dobrý. Má cenu to vůbec řešit?
Jamaz
Profil
Myslel jsem, že je dobrý k optimalizaci rewrite pravidel. Vnímal jsem ho jako error.log do kterého se zaznamenávají chyby a upozornění různého stupně závažnosti, tak jsem se snažil zbavit toho:
"pass through"
"trying to replace prefix"
"internal redirect with"
"escaping ... for redirect".

Měl jsem představu, že v ostrém provozu nastavím RewriteLogLevel na úroveň zajišťující, že se zobrazí jen chyby, které má smysl řešit. Myslel jsem, že je to úroveň 1.
Kajman_
Profil *
Rewritelog není obdoba error logu. Spíš je dobré zkontrolovat, zda se tam něco např. necyklí ale chová se tak, jak má (třeba, že desektrát nepřepisuje index.php na index.php v jednom požadavku nebo podobné věci.). Myslím, že na ostrém serveru nemá význam a manuál doporučuje jeho vypunutí.

Ty zmíněné fráze nejsou chyby, prostě jen informace o tom, co modul zrovna dělá. Pokud je tam chyba, vrací apache chybu 500, takže to člověk rychle pozná.
Jamaz
Profil
Kajmane děkuju za informaci, že rewritelog není obdoba error.log

BTW: kde je manuál, který doporučuje jeho vypnutí? Nic takového jsem nenašel ani v
httpd.apache.org/docs/1.3/mod/mod_rewrite.html ani v
httpd.apache.org/docs/2.0/mod/mod_rewrite.html
(oba uvádějí "Use the rewriting logfile at a Level greater than 2 only for debugging!")

Je nějaký manuál lepší/spolehlivější?
Kajman_
Profil *
...a manuál doporučuje jeho vypunutí.

Tak to jsem se upsal. Nemám dobrou paměť.

Jinak nic lepšího než zmíněný manuál neznám. Ještě existuje příručka s některými příklady
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

a pár jednoduchých příkladů a postřehů je i na jpw ;-)
http://www.jakpsatweb.cz/server/mod_rewrite/mod-rewrite-priklady.html
Toto téma je uzamčeno. Odpověď nelze zaslat.

0