Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Friendly urls - przekierowanie z index.pl?page=adres na /adres
Forum PHP.pl > Forum > Serwery WWW
belwarg
Witam!
Mam problem z ustawieniem przyjaznych linków na stronie. W grę wchodzi tylko htaccess, nie mam możliwości modyfikowania kodu i dopisania jakiegoś routera w php. Generalnie wygląda to tak że jest plik index.php w którym następuje wczytanie treści poszczególnych podstron za pomocą GET.
Na chwilę obecną linki wyglądają w ten sposób:
www.adres.pl/index.php?page=adres_podstrony

Chcę je wszystkie zmienić na
www.adres.pl/adres_podstrony

Z tym nie mam żadnego problemu
RewriteRule ^adres_podstrony$ index.php?page=adres_podstrony [QSA,L]
i wszystko działa gdy wpisuję nowy adres.

Teraz chciałbym jeszcze dodać 301 ze starych adresów na nowe (bo co z tego że linkowanie na stronie zmienię na nowe jeśli zaindeksowane są stare adresy). I tutaj zaczynają się schody. Próbowałem
RewriteCond %{QUERY_STRING} ^page=adres_podstrony$
RewriteRule ^(.*)$ http://www.adres.pl/adres_podstrony? [R=301,L]
ale wtedy po wpisaniu starego adresu wpadam w pętlę przekierowań

Jak to ogarnąć?
nospor
Zapętlenie się jest tu dość oczywistą rzeczą. Musisz w kodzie pozmieniać wszystkie stare adresy na nowe. Nie ma bata.

Od biedy możesz przechwycić treśc wygenerowanej strony (przy pomocy ob_start() itp) i w locie zmieniać stare adresy na nowe
belwarg
Zmiana linków na stronie (są głównie w menu + kilka w treści poszczególnych podstron) nie jest problemem. Chodzi mi o to że jeśli nie dodam 301 ze starych adresów sporo stracę w SERPach - niektóre podstrony i frazy były pozycjonowane i nie mogę sobie na to pozwolić. Wygląda niestety na to że będę musiał pogrzebać w kodzie poprzednika...
nospor
A próbowałeś zmienić kolejnosc przekierowań w .htaccess?
belwarg
Tak, niezależnie od kolejności efekt jest ten sam - pętla przekierowań.
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.