Wpis z mikrobloga

Czy za pomocą #htaccess jestem w stanie to skrócić do jednej linii:

RewriteRule /images/(.*)/(.*)/(.*)/(.*)/(.*) image.php?link=$1_$2_$3_$4_$5 [L,QSA]
RewriteRule /images/(.*)/(.*)/(.*)/(.*) image.php?link=$1_$2_$3_$4 [L,QSA]
RewriteRule /images/(.*)/(.*)/(.*) image.php?link=$1_$2_$3 [L,QSA]
RewriteRule /images/(.*)/(.*) image.php?link=$1_$2 [L,QSA]
RewriteRule /images/(.*) image.php?link=$1 [L,QSA]

Nie mogę przerobić pliku image.php
#linux #programowaniephp #php #apache
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Wladyslaw_Jagiello: nie nabijam się z Ciebie, tylko z rozwiązania :) obraz wyraża 1000 słów, ale odpowiem: to proszenie się o kłopoty w przyszłości, utrzymywanie tego typu "patchy" to ból w tyłku, zwłaszcza dla kolejnych ludzi. Nie lepiej z jakiegoś routera skorzystać?
  • Odpowiedz
@uirapuru: nie.
W starej wersji strony zdjęcia były poupychane po kilkunastu katalogach (ręcznie). Te same nazwy plików w wielu katalogach odnoszą się do różnych plików.
Nie mam ochoty pisać dodatkowego skryptu który mi wyszuka i zmieni odpowiedni link... tak jest prościej.

I żaden nowy element nie będzie tam już dodany.
  • Odpowiedz
@Wladyslaw_Jagiello: Na własne ryzyko możesz spróbować te dwie linie:

RewriteRule (/images/[^/]+)/(.+) $1_$2 [N,DPI]
RewriteRule /images/(.*)$ image.php?link=$1 [L,QSA]
ale to raczej niebezpieczna metoda - jakieś bugi, nieskończone pętle... u mnie działa.
  • Odpowiedz
RewriteRule /images/(.*) image.php?link=$1 [L,QSA]


@Wladyslaw_Jagiello: btw, to nie lepiej w rewrite rule regexem złapać wszystko po /images/ i to przekazać jako jeden parametr w skrypcie?

RewriteRule /images/(.*) image.php?link=$1 [QSA,L,B]

i tylko tyle. (.*) jest chyba standardowo greedy, więc / też będzie łapać. a pod $1 poleci string (strzelam, że zdekodowany): dir1/dir2/dir3/plik.jpg - do obrobienia i czego tam tylko chcesz w image.php bez jakichś pseudokonkatenacji za pomocą podkreślenia
  • Odpowiedz