pozdrav
vec neko vreme citam dokumentacije i pitam google ali ne mogu da nadjem odgovor, pa rekoh da pitam ovde
.htaccess situacija:
radim redirekt sa jednog domena na drugi (preselio sam sajt)
postoje 3 uslova:
URL tipa archives* redirektati na jedan nacin
URL tipa feeds* ne redirektati
sve ostalo da ide na novi homepage (mrzi me da matchujem sve ostale slucajeve)
evo ga .htaccess
Kôd:
RewriteEngine On
RewriteBase /
#keep old RSS in place, just so that old users can find about the new site
RewriteRule ^feeds/(.*) index.php?url=/feeds/$1 [L,QSA,NS]
#redirect to new articles @ www.rbnet
RewriteRule archives/([0-9]+)- http://www.robi-bobi.net/blog/$1.html [NS,R=301,L]
#in case all else fails, redirect to www homepage
RewriteRule (.*) http://www.robi-bobi.net/ [NS,R=301,L]
problem:
za URL:
http://blog.robi-bobi.net/feeds/index.rss2
dobijam kao rezultat sledeci redirekt:
http://www.robi-bobi.net/?url=/feeds/index.rss2
po meni, posto sva pravila imaju i L i NS flag, onda bi trebalo da se samo jedno od njih ispuni za jedan request
dakle, recimo neko pravilo ima match, ono je Last u trenutnom requestu, ukoliko postoji subrequest, onda bi ovaj NS trebao da spreci match bilo kog drugog pravila.
evo i mod_rewrite loga (RewriteLogLevel 3):
Kôd:
#tail -f /var/log/apache2/rewrite.log | grep feeds
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4aa0b8/initial] (3) [perdir /home/robibobi/sites/blog.robi-bobi.net/] add path info postfix: /home/robibobi/sites/blog.robi-bobi.net/feeds -> /home/robibobi/sites/blog.robi-bobi.net/feeds/index.rss2
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4aa0b8/initial] (3) [perdir /home/robibobi/sites/blog.robi-bobi.net/] strip per-dir prefix: /home/robibobi/sites/blog.robi-bobi.net/feeds/index.rss2 -> feeds/index.rss2
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4aa0b8/initial] (3) [perdir /home/robibobi/sites/blog.robi-bobi.net/] applying pattern '^feeds/(.*)' to uri 'feeds/index.rss2'
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4aa0b8/initial] (2) [perdir /home/robibobi/sites/blog.robi-bobi.net/] rewrite 'feeds/index.rss2' -> 'index.php?url=/feeds/index.rss2'
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4aa0b8/initial] (3) split uri=index.php?url=/feeds/index.rss2 -> uri=index.php, args=url=/feeds/index.rss2
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4b5ca8/initial/redir#1] (3) [perdir /home/robibobi/sites/blog.robi-bobi.net/] applying pattern '^feeds/(.*)' to uri 'index.php'
195.34.104.214 - - [03/Dec/2009:07:12:16 --0500] [blog.robi-bobi.net/sid#a256d08][rid#a4b5ca8/initial/redir#1] (1) [perdir /home/robibobi/sites/blog.robi-bobi.net/] redirect to http://www.robi-bobi.net/?url=/feeds/index.rss2 [REDIRECT/301]
dakle, vidim da jednom prodje pravilo: feeds/(.*) -> index.php?url=feeds/$1
dovde dobro
medjutim, zasto mi posle opet radi match na index.php, koji prolazi (verovatno ovo poslednje pravilo)
ENV:
debian
apache 2.2
php as fcgi