Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mod_rewrite] Dwa katalogi do poszukiwania plików
kiler129
post 23.02.2012, 01:53:01
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował kiler129 23.02.2012, 01:53:28


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
by_ikar
post 23.02.2012, 09:04:55
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kiler129
post 23.02.2012, 09:40:40
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


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ł?

Ten post edytował kiler129 24.02.2012, 02:23:01


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 14:22