Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mod_rewrite - Jak pominac obrazki, css, js..
Forum PHP.pl > Forum > Serwery WWW > Apache
NuLL
Mam taki prosty plik .htaccess
Kod
RewriteEngine On
#RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{2,4}$)
RewriteRule ^.*$ index.php?$1

On przepisuje adres tak aby nie bylo w nim index.php jednakze nie pomija obrazkow,css-a oraz js. Czy da sie jakos pominac przepisywanie jesli REQUEST_URI konczy sie konkretnymi rozszerzeniami badz jesli REQUEST_URI zawiera okreslony katalog ?
bregovic
Zdaje się że jeśli na końcu RewriteRule dodasz flagę [L] to pominione zostaną istniejące pliki - ale moge źle pamiętać.
NuLL
Niestety to nie pomaga - musze chyba jeszcze pokombinowac.
Zajec
Kod
RewriteRule !(\.(jpg|jpeg|png)$) index.php
Pomija wszyttko kończące się na
.jpg
.jpeg
.png

A do wpisanego adresu dostajesz się przez $_SERVER['REQUESTED_URI']
sobstel
Cytat(bregovic @ 2005-11-09 02:26:50)
Zdaje się że jeśli na końcu RewriteRule dodasz flagę [L] to pominione zostaną istniejące pliki - ale moge źle pamiętać.

nie, do pomijania istniejacych powinno sie przydac to :

Kod
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


a [L] na koncu oznacza tylko zakonczenie przetwarzania (ostatnia regula)
NuLL
Zajec - thx - nie myslalem ze mozna to tak prosto zrobic smile.gif
.johnny
Cytat(bregovic @ 2005-11-09 02:26:50)
a [L] na koncu oznacza tylko zakonczenie przetwarzania (ostatnia regula)
No własnie chciałem ostatnio z tego skorzystac, zrobiłem sobie taki .htaccess:
Kod
RewriteEngine On
#RewriteBase /

# dla tych katalogow nic nie rob (URL tak jak jest)
RewriteRule ^(feed|gfx|css|js).*$ - [last]

# dla tych rozszerzen tez nic nie rob
#RewriteRule ^.*\.(gif|jpg|png|css|js)$ - [last]

# wszystko inne wrzuc do index.php
RewriteRule ^(.*)$ index.php?r=$1

index.php
  1. <?php print_r($_GET); ?>

i te dwie pierwsze regułki działają mi elegancko, ale ta ostatnia - nie mam pojęcia czemu - robi mi coś takiego - wywołanie http://host/dupa/dupa/ :
Kod
Array ( [r] => index.php )

Nie mam pojęcia co o tym myśleć dry.gif
Jedyne co zauważyłem, to że wstawienie jakiegoś "normalnego" znaku do RewriteRule, np.
Kod
RewriteRule ^(d.*)$ index.php?r=$1
powoduje, że wszystko zaczyna działac zgodnie z oczekiwaniami (tzn. $_GET['r'] == 'dupa/dupa/')

Problem pojawia się niezaleznie od uzycia
Kod
RewriteBase /
na początku, zarówno pod PHP4 jak i PHP5 (to akruat zdaje się nie ma większego znaczenia), na moim własnym Apache'u jak i na serwerze providera.

Ktoś ma jakis pomysł...?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.