Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> htaccess - przekierowania z użyciem regex do regex?
phpamator
post 19.03.2019, 17:59:14
Post #1





Grupa: Zarejestrowani
Postów: 241
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Panowie/Panie,
tak wiem, wciaż jakieś idiotyczne pytania zadaję ale ...
Ma problem z którym nie bardzo potrafię sobie poradzić, mianowicie z jakiegoś powodu moje Magento generuje co jakiś czas nowe urle więc dodaję sobie co chwilę kolejna listę żeby działało bez wywalania 404.
Jest to trochę irytujace i pomyślałem czy można by w jakiś sposób zmusić htaccess do działania. Nie jest to problem jeśli np zmienia się jakiś element url'a np inkrementuje liczbę dodawana na końcu url'a.
RedirectMatch daje rade ale kiedy url nie daje się np przekierować bo /kategoria/strona-10/ nie może być przekierowana do /strona.html ponieważ takowa nie istnieje, istnieje za to /strona-10.html.
Niestety każdorazowa zmiana url'a to kolejny redirect 301 /kategoria/strona-numer/ do /strona-numer.html

Zapytacie o co pytam .... czego chcę ....
czy istnieje jakaś możliwość ustawienia przekierowania w taki sposób, że zmiana /kategoria-numer/ będzie zawsze równało się /strona-numer.html ?
Bo przecież nie mogę RedirectMatch 301 /kategoria/strona-(\d{3})/ /strona-(\d{3}).html bo wywalę stronę albo dostanę 404.

Da się to jakoś obejść ?

Go to the top of the page
+Quote Post
trueblue
post 19.03.2019, 18:03:19
Post #2





Grupa: Zarejestrowani
Postów: 5 599
Pomógł: 1524
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Kod
RewriteCond %{REQUEST_URI} ^/kategoria/strona-(\d{3})/
RewriteRule ^.*$ http://domena.pl/strona-%1.html [R=301,L]


--------------------
Go to the top of the page
+Quote Post
phpamator
post 20.03.2019, 11:04:05
Post #3





Grupa: Zarejestrowani
Postów: 241
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


aaaaaaah trublue wielgachne dzięki, nie ogarnłdane@edpa.cmo.uk

Aaaaaaah trueblue wielgachne dzięki, nie ogarnałem jeszcze tego zagadnienia.
Już będę wiedział na przyszłość jak się do tego zabrać.
Dziękuję

Edyta:
Nie wiem co źle zrobiłem ... miałem wrażenie, że działa ale okazało się, że nie ...
wpisałem oczywiście opatrzone tagami <IfModule mod_rewrite.c> ...
dziś rano, okazało się, url znowu się zmienił ale już przekierowanie nie zadziałało. sad.gif

tak działa: Redirect 301 /browse/sale-51/ /sale-51.html?dir=asc&order=position
a tak nie:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/browse/sale-(\d{3})/
RewriteRule ^.*$ https://mojadomena.pl/sale-%1.html?dir=asc&...;order=position [R=301,L]
</IfModule>

Why ?

Ten post edytował phpamator 20.03.2019, 11:09:49
Go to the top of the page
+Quote Post
trueblue
post 21.03.2019, 11:11:55
Post #4





Grupa: Zarejestrowani
Postów: 5 599
Pomógł: 1524
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A jakich wartości dotyczy wzorzec \d{3}?


--------------------
Go to the top of the page
+Quote Post
phpamator
post 28.03.2019, 12:22:26
Post #5





Grupa: Zarejestrowani
Postów: 241
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Ooo hej trueblue,
Przepraszam, nie zaglądałęm od kilku dni.
Wartości jakie się tam pojawiają to jak narazie dwu cyfrowe liczby a dlaczego ?
Czyżby błąd polegał na \d{3} zamiast \d{2} ?
A co jeśli ilość wygenerowanych url'i przekroczy 99 ?
wtedy zmienić ma \d{3} ?
A nie można zdefiniować zakresu on 1 do 1000 ?
Czyli powinienem poprostu zmienić \d{1,4} i będzie aż do 9999 ..... ?
ale wtopa


Ten post edytował phpamator 28.03.2019, 12:27:20
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.12.2019 - 08:54