Skocz do zawartości

Friendly URL na dynamicznych URL przez rewrite w htaccess


kwakier

Rekomendowane odpowiedzi

Zrobiłem coś takiego:

RewriteRule ^Products/([^/]+)/([^/]+) $2 [R=301,L]

Samo przepisanie jak najbardziej działa, w praktyce wygląda tak:

www.strona.pl/Products/22/nazwa-produktu (URL generowany przez CMS)

przepisuje na:

www.strona.pl/nazwa-produktu

Z tym, że nie odnajduje strony (error 404)

Czy mogę prosić o pomoc? Jestem dość początkujący.

Odnośnik do komentarza
Udostępnij na innych stronach

[color=#282828][font=helvetica, arial, sans-serif]www.strona.pl/nazwa-produktu

[/font][/color]

ja w takich przypadkach robię tak:

dodatkowa kolumna 'slug' w bazie danych, slug generowany na podstawie tytułu podstrony lub ręcznie.

i następnie pobieram podstrone GETem /index.php?slug=nazwa-produktu, i dajesz proste rewrite i masz ładne adresy :)

SELECT * FROM newsy WHERE slug = 'nazwa-produktu'

Tak w dużym uproszczeniu to wygląda :)

Pozdrawiam

a9177b36246d7ce96fa698c9971dd36b.png

Sprzęt akwarystyczny kupuj w moim - sklep akwarystyczny.

adwokat częstochowa - Radca prawny Grzegorz Ledwoń. Pomoc w sprawie odszkodowania.

Odnośnik do komentarza
Udostępnij na innych stronach

Samo przepisanie jak najbardziej działa [...] przepisuje na:[ .. ] Z tym, że nie odnajduje strony (error 404)

Więc NIE DZIAŁA ! W dziale dla początkujących masz przyklejone linki....

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

Ponownie proszę o pomoc, tak wygląda rewrite w pliku htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^strona.pl(.*) [NC]
RewriteRule ^(.*)$ https://www.strona.pl/$1 [R=301,L]

RewriteRule ^stary-adres-produktu$ nowy-adres-produktu$1 [R=301,L]
RewriteRule ^stary-adres-produktu2$ nowy-adres-produktu2$1 [R=301,L]
(...)
RewriteRule ^stary-adres-produktu30$ nowy-adres-produktu30$1 [R=301,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

Mam dwa problemy:

1. Ostatni rewrite robi friendly URL-e ale tak czy inaczej po wpisaniu w przegladarce www.strona.pl/index.php?page=kontakt, wyswietla sie strona kontaktu a nie przepisuje sie adres na bardziej przyjazny. Próbowałem dopisać R=301 w fladze tego rewrita ale cała strona przestała po prostu działać.

2. Google zaindeksowały mi adres www.strona.pl/index.php

zrobiłem coś takiego:

RewriteRule ^/index.php$ https://www.strona.pl [R=301,L]

Ale przestały działać friendly URL, czy mogę prosić o pomoc? Będę niezmiernie wdzięczny.

Odnośnik do komentarza
Udostępnij na innych stronach

po wpisaniu w przegladarce www.strona.pl/index.php?page=kontakt, wyswietla sie strona kontaktu a nie przepisuje sie adres na bardziej przyjazny

Mam wrażenie, że nie do końca rozumiesz czym jest przepisywanie adresów i jaka w tym wszystkim rola .htaccess. Otóż:

  • jeśli chcesz, żeby po wpisaniu /index.php?page=kontakt adres zmieniał się na /kontakt musisz wykonać przekierowanie;
  • jeśli chciałbyś, aby po wpisaniu /kontakt wyświetliła się zawartość podstrony /index.php?page=kontakt powinieneś zastosować RewriteRule;
  • jeśli zależy Ci na tym, by odnośniki na Twojej stronie prowadziły do /kontakt a nie /index.php?page=kontakt to zmień odnośniki na swojej stronie.

Na emeryturze po SEO zajmuję się R&D.

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, no to rozjasniles mi sytuacje- dziekuje.

Na stronie wszystkie linki kierowane sa na przyjazne URL-e. Rozumiem, ze pod katem SEO nie ma znaczenia to, ze link /index.php?page=kontakt jest aktywny w tym sensie ze nie przepisuje adresu na /kontakt jezeli linki w postaci "brzydkiej" nie wystepuja na stronie?

Jezeli chodzi o adres https://www.strona.pl/index.php - tutaj popelnilem blad i jeden link na jednej z podstron byl w formie brzydkiej, niestety google zdazyly to zaindeksowac i zrobil sie dubel :(

Dla tego chcialem zrobic 301 z ^index.php na www.strona.pl

Odnośnik do komentarza
Udostępnij na innych stronach

Podczepię się pod temat:

Mianowicie mam link:

www.domena.pl/p/Ręcznik+Aqua+-+gramatura+500g%2Fm2

i jak wpiszę adres bez FriendURL to wszystko działa. (urlencode dodałem, bo ze spacjami nie przejdzie)

Ale w ten sposób nie działa. W htaccess próbowałem już wiele regexpów, które na pozór to powinny widzieć prawidłowo np.

RewriteEngine On
RewriteRule ^p/(.*)$ index.php?p=$1
RewriteEngine On
RewriteRule ^p/(.+)$ index.php?p=$1

I nadal nic. Jakieś solucje?

EDIT. Ok, zorientowałem się, że problem robią polskie znaki, więc mam pytanie, czy da się to prosto obejść, czy będą problemy z kodowaniem pod różnymi wyszukiwarkami itd? w sensie czy nie lepiej dorobić odnośniki bez PL

EDIT2. Bez sensu ;) przy "RewriteRule ^p/(.+)$ index.php?p=$1" i usunięciu "urlencode" zaczęło działać bez problemu.

penguins.jpg

Odwiedzaj regularnie mój blog o seo na lukaszt.pl podobno warto ;)

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