Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przepisywanie url-i
Forum PHP.pl > Forum > PHP
Maxximilian
Witam,

Pracuję obecnie nad przepisywaniem url-i w mod rewrite.

Napisałem sobie taką funkcyjkę
  1. $buf = preg_replace('#([\w\d\.\:\_\/]+)\.php\?([\w\d\.\:\_\/]+)=([\w\d\.\:\_\/]+)(&|&)([\w\d\.\:\_\/]+)=([\w\d\.\:\_\/]+)(&|&)([\w\d\.\:\_\/]+)=([\w\d\.\:\_\/]+)(\'|")#si', '\1-\2-\3-\5-\6-\8-\9.html\10', $buf);
  2. $buf = preg_replace('#([\w\d\.\:\_\/]+)\.php\?([\w\d\.\:\_\/]+)=([\w\d\.\:\_\/]+)(&|&)([\w\d\.\:\_\/]+)=([\w\d\.\:\_\/]+)(\'|")#si', '\1-\2-\3-\5-\6.html\7', $buf);
  3. $buf = preg_replace('#([\w\d\.\:\_\/]+)\.php\?([\w\d\.\:\_\/]+)=([\w\d\.\:\_\/]+)(\'|")#si', '\1-\2-\3.html\4', $buf);
  4. $buf = preg_replace('#([\w\d\.\:\_\/]+)\.php(\'|")#si', '\1.html\2', $buf);


problem polega na tym, że sformułowanie

  1. ([\w\d\.\:\_\/]+)


nie przepisuje ciągów znaków takich jak :


groups.php?stats=1&author=moj_adres_to_henrykg%40na_serwerze_gazeta.pl&name=Henry%28k%29
markread.php?group=1&page=iuuq%3B00nbyynjmjbo%2Fv3%2Fqm0hspvqt%2Fqi


konkretnie chodzi o zmienne

moj_adres_to_henrykg%40na_serwerze_gazeta.pl
iuuq%3B00nbyynjmjbo%2Fv3%2Fqm0hspvqt%2Fqi
Henry%28k%29

Czy ktoś mógłby mi podpowiedzieć jak to poprawić?

Z góry bardzo dziękuję za pomoc.


Konkretnie są to przyjazne linki do php-fusion w oparciu o :

http://blog-lisu.eu/2009/07/19/przyjazne-l...-php-fusion-v7/
Joachim Peters
Spróbuj użyć:
  1. $buf = preg_replace('/(.*)\.php(.*)/', '\1.html\2', $buf);
Maxximilian
W ten sposób?

  1. $buf = preg_replace('#([\w\d\.\:\_\/]+)\.php\?([\w\d\.\:\_\/]+)=(.*)(\'|")#si', '\1-\2-\3.html\4', $buf);


Prawidłowa składnia do przeniesienia zmiennej przygotowanej urlencode w tym @ i zanków specjalnych do url to :

  1.  
  2.  
  3. ([\w\d\.\%\+\@\:\_\/]+)
  4.  
  5.  



Mam jeszcze jedno pytanie - mam problem z nazwami użytkowników, które zawierają () - urlencode zakoduje je do %28 i %29 ale w pasku adresu są one automatycznie zamieniane do () (np. http://xxx.xx.pl/groups-stats-1-author-moj...e-Henry(k).html i powoduje to, że prowadzą do nikąd

Wynika myślę, to z nieprawidłowego przepisania w .htaccess

  1.  
  2. RewriteRule ^([^-]+)-([^-]+)-([^-]+)-([^-]+)-([^-]+)-([^-]+)-([^-]+)\.html$ $1.php?$2=$3&$4=$5&$6=$7 [L,NC,NS]
  3.  
  4.  


Może mi ktoś pomóc - jak to napisać ?
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.