Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] Dwa katalogi do poszukiwania plików
Forum PHP.pl > Forum > PHP
kiler129
Witajcie!
Pytanie nie tyczy się stricte php lecz mod_rewrite (a więc tematu pokrewnego).
Krótko i rzeczowo mówiąc chcę aby po odwołaniu się do /agfx/plik.png mod_rewrite poszukał "plik.png" najpierw w /admin/custom_gfx/ a następnie jeśli go tam nie ma spróbował w /admin/default_gfx/, jeśli tam też go nie ma wypluł zwykłe 404 jakby nigdy nic wink.gif
Samo przepisanie linka to nie problem:
Kod
RewriteRule ^agfx/(.*)$ admin/default_gfx/$1 [QSA,L]

Niestety nie mam pojęcia jak zrobić ową alternatywę closedeyes.gif
by_ikar
Widzisz, serwer nie jest tobą, nie domyśli się że poszukiwana grafika jest albo w tym folderze, albo w tamtym. A jak będzie w obu, to jeszcze się domyśli że tobie nie chodzi o ten pierwszy katalog, tylko od ten drugi..

Takie rzeczy możesz lepiej rozwiązać w php, tzn w ogóle możesz. Cały ruch przekierowujesz na skrypt, a on już sobie katalogi przeszukuje. A do tego wystarczy prosty warunek czy plik istnieje.

Nie jestem mistrzem w konfiguracji, ale na moje oko, to co chcesz osiągnąć, jest nie do osiągnięcia od strony htaccess.
kiler129
Kierowanie elementów statycznych przez php to najgłupsze co można zrobić - za dużo straty na cpu i ramie.
Warunek tu jest prosty i wiem ze takie cos da sie osiągnąć samym rewrite tylko nie do końca wiem jak wink.gif

Edit:
Jest jeden sposób ale bardzo brzydki, póki co nie mam pomysłu na jego poprawienie:

Struktura
Kod
.
|-- .htaccess
|-- _custom
|   |-- .htaccess
|   `-- test1.html
`-- _default
    |-- test1.html
    `-- test2.html


.htaccess w głownym
Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^agfx/(.*)$ _custom/$1 [L]


.htaccess w _custom
Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ ../_default/$1 [L]


Takim sposobem otrzymamy to co chcę:
http://example.com/agfx/test1.html => _custom/test1.html
http://example.com/agfx/test2.html => _default/test2.html
http://example.com/agfx/test3.html => HTTP/404

Niemniej jednak to rozwiązanie jest nieco brzydkie, wolałbym uniknąć dwóch .htacces'ów i kombinowania z cofaniem się dry.gif
Ktoś ma jakiś 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.