Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mod_rewrite] Przyjazne linki i pętla przekierowań.
thek
post
Post #1





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




W serwisie był kiedyś stary format paginacji z użyciem GET, czyli:
www.domena.pl/podstrona.php?strona=4
Oczywiście przerobiłem to do ładnej formy, czyli:
www.domena.pl/podstrona,4.php
ale fizycznie korzystałem wciąż z tych samych plików, więc zastosowałem regułki w stylu:
[APACHE] pobierz, plaintext
  1. # przepisuje wywołanie z GET na nice url ze statusem 301
  2. # bez L też działa, ale dla pewności, że zakończy tu i od nowa poleci po regułach...
  3. RewriteCond %{QUERY_STRING} ^strona=([0-9]+)$
  4. RewriteRule ^podstrona.php$ /podstrona,%1.php? [R=301,L]
  5. # a tu wskazuję, by taki nice url wciąż korzystał ze starego wywołania
  6. RewriteRule ^podstrona,([0-9]+).php$ podstrona.php?strona=$1 [L]
[APACHE] pobierz, plaintext

Na starym hostingu działało to, ale niestety przy przenosinach okazało się, że na nowym całość się zapętla, choć flaga L powinna zatrzymać przetwarzanie reguł. Problem w tym, że następuje wciąż przekierowanie po drugiej z reguł i całość wpada w pętlę. Gdybym usunął pierwszą regułę (z warunkiem) - zadziała. Ale chciałbym tego uniknąć, gdyż ze względów SEO chcialbym użytkownikom dać możliwość wejścia na stronę w przypadku użycia starego formatu adresu.
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Czasem tak się zdarza, że pomimo pierdołowatych rozwiązań, wpada w pętle i lepiej skryptem przekierowywać. Pomijam już fakt kiepskeij przenośności pomiędzy daemonami.

Spróbuj tak:
[APACHE] pobierz, plaintext
  1. RewriteCond %{QUERY_STRING} ^strona=([0-9]+)$
  2. RewriteRule ^podstrona.php$ /podstrona,%1.php? [R=301,L]
  3.  
  4. RewriteCond %{QUERY_STRING} !^strona=([0-9]+)$
  5. RewriteRule ^podstrona,([0-9]+).php$ podstrona.php?strona=$1 [L]
[APACHE] pobierz, plaintext
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 22:37