[Apache] Kolejna zagwozdka z mod_rewrite

0

Posiadam taką regułkę w htaccess (może da się ją uprościć? - ogólnie chodzi mi o podział działów strony jako drzewo folderów):

RewriteEngine On
RewriteBase /test
RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ /test/index.php?p1=$1&p2=$2&p3=$3&p4=$4 [L]
RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ /test/index.php?p1=$1&p2=$2&p3=$3 [L]
RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ /test/index.php?p1=$1&p2=$2 [L]
RewriteRule ^([0-9a-zA-Z]+)$ /test/index.php?p1=$1 [L]

Oraz plik index.php:

<pre><? var_dump($_GET); ?></pre>
<img src="test.png" />

Teraz podając w przeglądarce adres np:

http://localhost/test/cos
Otrzymuję:

array(1) {
  ["p1"]=>
  string(3) "cos"
}

I obrazek - wszystko ok. Jednakże wpisaniu:

http://localhost/test/cos/wczyms/gdzies/cos
Otrzymuję:

array(4) {
  ["p1"]=>
  string(3) "cos"
  ["p2"]=>
  string(6) "wczyms"
  ["p3"]=>
  string(6) "gdzies"
  ["p4"]=>
  string(3) "cos"
}

I brak obrazka, gdyż przeglądarka chce wczytać go z

http://localhost/test/cos/wczyms/gdzies/test.png

Jak się przed tym niepożądanym działaniem ustrzec? Podejrzewam, że trzeba jakoś z przepisywania wykluczyć obrazki itp, ale jak? Czy też kombinować z doklejaniem do każdego źródła obrazka "../" w zależności od ilości parametrów, ale to jest dość głupie rozwiązanie.

0

Polecam zerknięcie na źródło CubeCVS (na epsisoft.bee.pl jest). Tam jest coś takiego zastosowane i uprości Ci zarówno wyrażenie w mod_rewrite jak i rozwiąże problem z lokalizacją względną obrazków.

0
Adam.Pilorz napisał(a)

Polecam zerknięcie na źródło CubeCVS (na epsisoft.bee.pl jest).

Zerknąłbym i to nawet z chęcią, ale serwer nie odpowiada.

0

Fakt faktem, wczoraj były jakieś problemy z domeną. Ale już powinno być OK.

0
Adam.Pilorz napisał(a)

Tam jest coś takiego zastosowane i uprości Ci zarówno wyrażenie w mod_rewrite jak i rozwiąże problem z lokalizacją względną obrazków.

Niby jest, ale tylko dla 2 parametrów, ja potrzebuję od 1 do 4. Rozwiązanie problemu z obrazkami to dopisywanie do każdego obrazka z przodu bezwzględnej ścieżki, co jak pisałem, wydaje mi się rozwiązaniem na około. Poszedłem dalej swoim tropem i po dłuższej chwili testowania do powyższego .htaccess dodałem:

RewriteRule (/[0-9a-zA-Z]+\.(png|jpg|jpeg|gif))$ /test$1 [R]I wszystko śmiga cacy [diabel].

0

Nie przyjrzałeś się dokładnie :). U mnie ścieżka może mieć i 20 / i czegoś tam dalej - reszta jest załatwiana już na poziomie skryptu (bo prościej).

1 użytkowników online, w tym zalogowanych: 0, gości: 1