Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess - przekierowania z użyciem regex do regex?
Forum PHP.pl > Forum > Serwery WWW
phpamator
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ść ?

trueblue
Kod
RewriteCond %{REQUEST_URI} ^/kategoria/strona-(\d{3})/
RewriteRule ^.*$ http://domena.pl/strona-%1.html [R=301,L]
phpamator
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 ?
trueblue
A jakich wartości dotyczy wzorzec \d{3}?
phpamator
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
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.