Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][.htaccess] Reguła RewriteRule - zmiana adresów stron
Mazurek
post 24.10.2019, 08:04:38
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


Próbuję zmienić starą adresację
domena.pl/produkt/nazwa-towaru-12345 gdzie nazwa-towaru jest za każdym razem inną nazwą, liczby po myślniku są nieistotne dla nowej adresacji i też zmienne.
na nową
domena.pl/nazwa-towaru.html
Musi zniknąć ciąg losowych znaków liczbowych na końcu oraz produkt . Dopisać należy .html

Stworzyłem dla pliku .htaccess reguły iżadna nie działa :

RewriteRule ^([^-]+).html$ produkt/$1-$2 [L]

RewriteRule ^([^-]+)\.html$ produkt/$1-$2 [L]

RewriteRule ^[a-z0-9\-]\.html$ produkt/$1-

Macie pomysł gdzie jest błąd.
Go to the top of the page
+Quote Post
kapslokk
post 24.10.2019, 08:34:13
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Ale co konkretnie nie dziala? Czy w przypadku starej adresacji liczby po myslniku to nie byl identyfikator towaru, po ktorym aplikacja szukala towaru w bazie danych?
Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 08:42:31
Post #3





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A zmieniłeś sposób generacji tych linków w kodzie strony, czy chcesz, aby .htaccess w magiczny sposób je pozmieniał?


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 08:54:58
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


Zmieniłem oprogramowanie strony.
Cytat
Ale co konkretnie nie dziala? Czy w przypadku starej adresacji liczby po myslniku to nie byl identyfikator towaru, po ktorym aplikacja szukala towaru w bazie danych?

domena.pl/produkt/nazwa-towaru-12345 gdzie nazwa-towaru jest za każdym razem inną nazwą, liczby po myślniku są nieistotne dla nowej adresacji i też zmienne.

Cytat
A zmieniłeś sposób generacji tych linków w kodzie strony, czy chcesz, aby .htaccess w magiczny sposób je pozmieniał?

Jest nowy skrypt, który pobiera z tej samej bazy SQL towary i musi się zgadzać nazwa-towaru dodatkowo .html w nowej adresacji.

dodatkowo mam inną regułę, która działa na innych stronach innym hostingu a tu te mi nie działa:

Kod
Options +FollowSymLinks +ExecCGI

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteEngine On

RewriteRule ^https://www.DOMENA.com.pl/product/nazwa-towaru-1l-123456$ https://www.DOMENA.com.pl/nazwa-towaru-1l.html


Ten post edytował Mazurek 24.10.2019, 08:58:26
Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 09:10:37
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Kod
RewriteCond %{REQUEST_URI} ^/produkt/(.*?)-(\d+)
RewriteRule .* /produkt/%1.html [R=301,L]


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 09:23:14
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


TRUEBLUE jest progres.
Kod
RewriteCond %{REQUEST_URI} ^/produkt/(.*?)-(\d+)
RewriteRule .* /%1.html [R=301,L]

poprawiłem i zgubiłem słowa produkt Działa dla części adresów.
W adresie starej nazwy mam np nazwa-towaru-piwo-500ml
i skrypt gubi wszystko co jest za liczbą 500 w efekcie zamiast nazwa-towaru-Pwo-500ml otrzymuję tylko nazwa-towaru-piwo
brakuje jakiejś reguły uwzględniającej liczby w adresie

Ten post edytował Mazurek 24.10.2019, 09:37:03
Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 09:33:28
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Za ostatnim myślnikiem miały być same cyfry. Jaką ostatecznie ma postać stary adres?


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 09:39:59
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


adres ma formy:
nazwa-towaru-123456 losowe cyfry
lub najczęściej nazwa-towaru-liczba-123456 przykładowo piwo-marki-zywiec-500ml-bezalholowoe-123456
docelowo musi być piwo-marki-zywiec-500ml-bezalholowoe.html a otrzymuję piwo-marki-zywiec.html bez -500ml-bezalholowoe
czyli skrypt musi ucinać ostatnie liczby
Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 09:45:22
Post #9





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Czyli ostatecznie ten przykładowy adres nie kończy się na 500ml.

Kod
RewriteCond %{REQUEST_URI} ^/produkt/(.*?)-(\d+)$
RewriteRule .* /%1.html [R=301,L]


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 09:56:51
Post #10





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


Dziękuję za pomoc w regułach RewriteRule. Mam jednak problem z częścią adresów gdzie w nazwie jest liczba. Ostatecznie ten adres kończy się na myślnik oraz losowe liczby -123456

Ten post edytował Mazurek 24.10.2019, 10:58:06
Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 11:04:55
Post #11





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To podaj adres, dla której ostatnia podana przeze mnie reguła nie działa.


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 11:17:27
Post #12





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


Sprawdzam, dodałeś $ na końcu i testuje, jakby działa smile.gif

Ten post edytował Mazurek 24.10.2019, 11:22:08
Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 11:20:53
Post #13





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Ostatnia reguła, którą podałem działa poprawnie z takim adresem.


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 11:27:00
Post #14





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


Przegapiłem poprawkę. Działa poprawnie. DZIĘKI x 2 poszło.
Mam jeszcze 1 problem. Na podstawie Twojego kodu podstawiłem sobie do zmiany nazw kategorii:

Kod
RewriteCond %{REQUEST_URI} ^/category/(.*?)-(\d+)
RewriteRule .* /category/%1 [R=301,L]

działa poprawnie i zamienia poprawnie
category/piwo-123456
na
category/piwo

Problem w tym że Google zindeksował mój stary serwis w formie : category/piwo-123456 LUB category/piwo-123456? czasami jest znak zapytania na końcu. I teraz ten znak zapytania się pojawia w nowym adresie . Jak go zgubić?

Go to the top of the page
+Quote Post
trueblue
post 24.10.2019, 11:34:20
Post #15





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


https://kawalekkodu.pl/jak-zgubic-ogon-czyl...ring-i-htaccess


--------------------
Go to the top of the page
+Quote Post
Mazurek
post 24.10.2019, 12:17:49
Post #16





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.10.2019

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


Mam dodać linię:
RewriteRule ^(.*)$ %{REQUEST_URI}?
lub
RewriteRule ^(.*)$ %{REQUEST_URI} [QSD]
obie linie kodu nie zmienia nic
Kod
RewriteCond %{REQUEST_URI} ^/category/(.*?)-(\d+)
RewriteRule .* /category/%1 [R=301,L]
RewriteRule ^(.*)$ %{REQUEST_URI}?


Tutaj miał ktoś podobny problem Temat: htaccess slash na koncu linka
ale jak dodałem ?$ do kodu:
Kod
RewriteCond %{REQUEST_URI} ^/category/(.*?)-(\d+)
RewriteRule .* /category/%1?$ [R=301,L]

to nie pomogło tylko w adresie wyświetla dodatkowo ?$

Ten post edytował Mazurek 24.10.2019, 13:35:13
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: 25.04.2024 - 01:09