Skocz do zawartości

mod_rewrite, przekierowanie i polskie znaki


Prysiu

Rekomendowane odpowiedzi

Hej!

Chcę przekierować stronę https://www.przyklad....żółć_Gęślą_Jaźń na https://www.przyklad....zolc-gesla-jazn - obie strony są identyczne, od strony serwera to to samo, adresy wygenerowane (w cakephp) routerem i slugiem (w obu przypadkach różnym).

W normalnej sytuacji po prostu bym utworzył nowe adresy, a stare wywalił. Niestety stare są już podlinkowane i z pewnością dużo bym przez to stracił w wyszukiwarkach.

Jako, że z przekierowaniem adresów z polskimi znakami w htaccess sobie nie poradziłem (to w ogóle możliwe?) to wymyśliłem, że przekieruję strony 1:1 filtrując je po powtarzalnym ciągu "186". Więc...

Mam w .htaccess regułę:


RewriteEngine On
RewriteBase /
RewriteRule ^.*/186/.*$ https://www.przyklad.pl/kategoria/186/test-zazolc-gesla-jazn [R=301,L,QSA]

I o dziwo od strony "widzialnej" działa, ponieważ adres generowany jest prawidłowo. Jednak zamiast strony pojawia się błąd 404 (sprawdziłem literówki ;) )

Help!

Ty też terefere!

Szkolenia językowe dla firm

Odnośnik do komentarza
Udostępnij na innych stronach

Nie do końca rozumiem o co w tym ma chodzić, ale jak jest serwis oparty o cakephp możesz dowolne przekierowanie zrobić w PHP w Router, w kontrolerze czy nawet w pliku index.php

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@Ustawienie przekierowania w PHP powoduje powstanie pętli przekierowania.

Ustawienie przez kogo <pytanie retoryczne> ?... Zapewniam cię, że prawidłowa implementacja nie spowoduje żadnych zapętleń.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Już się domyśliłem, że moja jest nieprawidłowa ;), a że siedzę nad tym od rana, to liczyłem na więcej wędki od mądrzejszych ode mnie. Próbowałem już wielu kombinacji, bo zwykle zadaję pytanie w ostateczności, gdy problem mnie przerasta.

Może to wina wersji Cake'a? 1.2.5

Niestety serwis był stawiany przez kogoś innego i teraz grzebanie w nim (serwisie) to chodzenie po cienkim lodzie.

Ty też terefere!

Szkolenia językowe dla firm

Odnośnik do komentarza
Udostępnij na innych stronach

Czasem zdarza się tak że w różnych wersjach apache rewrite działa nieco inaczej (powodując problemy z przekierowaniem).

Odnośnik do komentarza
Udostępnij na innych stronach

nad tym od rana, to liczyłem na więcej wędki od mądrzejszych ode mnie.
W zmiennej: $_SERVER["REQUEST_URI"]; będziesz miał adres/ciąg z żądania GET i na bazie tego możesz:

- na sztywno napisać warunki if()  301-> adres docelowy  ;
- if(polskie_znaki) funkcja_zmianiejąca_url_bez_pl(url_z_pl)  301 -> adres docelowy ;
- if(dopasowani_do_wzorca) funkcja_zmianiejąca_url_bez_pl(url_z_pl)  301 -> adres docelowy ;

w htaccess możesz jedynie zrobić przekierowanie na sztywno z -301-> na wpisując wszystkie url do przepisania.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Tworzenie osobnego skryptu okazało się niepotrzebne.

Udało mi się dynamicznie zmieniać postać linków z poziomu Controllera. Wszystko za pomocą wbudowanych funkcji Cake'a.

Dla przyszłych szukających, działający w moim przypadku kod:

...
if ( eregi('_',$slug) ) {
$this->redirect('/kategoria/'.$id.'/'.Inflector::slug($slug),301);
} else {
...

Coś polecacie do stosowania zamiast eregi()? Bo podobno już wychodzi z użycia :)

Ty też terefere!

Szkolenia językowe dla firm

Odnośnik do komentarza
Udostępnij na innych stronach

preg_match https://takien.com/51...n-php-5-3-0.php

---

I co @Prysiu - szło zrobić jak pisałem :dirol:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności