Skocz do zawartości

Pytanie o przekierowanie


Rekomendowane odpowiedzi

Z kilku powodów planuję przekierowanie adresów URL, dotąd używających tzw. "slug" ułożonych ze słów,np

adres.com/kategoria/pewien-produkt-tutaj

Czcę go przekierować na mało znaczący numer identyfikujący później produkt czy artukuł w mysql, czyli np:

adres.com/kategoria/3458dt56v89

Z automatu w htaccess lub w config httpd nie da się tego zrobić, bo przecież automat nie potrafi nadać odpowiedniego kodu produktu.

W PHP natomiast na starcie mogę wykonać próbę na starym URL w mysql, pobrać numer identyfikacyjny i przekierować go (301) ewentualnie na nowy adres.

Czy takie przekierowanie będzie taż OK?

Czy może niesie ze sobą jakieś negatywne skutki?

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli w adresach są tylko slugi i na ich podstawie są identyfikowane podstrony w bazie to nie ma innej możliwości jak znaleźć go w bazie od razu po wejściu na stronę, wybrać dla niego id rekordu, czy ten kod jeśli istnieje i już w PHP skierować na nowy adres.
Tak, będzie to w porządku.

Odnośnik do komentarza
Udostępnij na innych stronach

No wiem, że nie ma innej możliwości. Wiem, ze musze najpierw zanleźć identyfikator w bazie, zwłaszcza jeśli rekordów jest w tysiące...

Pytanie było na ile takie przekierownie z poziomu PHP może być negatywne.

Bo jakby nie było mogę pozostać przy adresach ze "slugami", chociaż wolałbym spróbować z parametrem ID.

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

A id to są integery czy tak samo jak slugi stringi? Bo jak stringi to zmiana może nic nie dać. Przy przejściu na integery wydajność zapytań do bazy powinna znacznie wzrosnąć. Oczywiście to będzie widoczne z czasem, jak już adresy się uaktualnią w indeksach wyszukiwarek.

Ja nie widzę negatywnych skutków takiego rozwiązania, chyba, że z adresu chcesz usunąć całkiem slugi. Wówczas coś tam pewnie negatywnego może wystąpić.

Ja bym zastosował ostatecznie mniej więcej taki schemat:
adres.com/kategoria/pewien-produkt-tutaj-12345
adres.com/kategoria/12345-pewien-produkt-tutaj
adres.com/12345-pewien-produkt-tutaj

Odnośnik do komentarza
Udostępnij na innych stronach

No właśnie nie. Ja bym chciał całkiem usunąć slugi z ostatniej części URL, nie tylko z powodów dot. odpytania bazy.

Takie slugi powstają z automatu oparte na tytule artykułu. A artykuły nie są moim dziełem tylko najczęściej bardzo wielu róźnych użytkowników, w dodatku bywa że w wielu językach. Nie dość, że taki slug podpada pod keyword stuffing, to często wychodzą nadmiernie długie, lub bezsensowne slugi, np slug.

I'm the king of rock.

Slug wtedy jest: /i-m-the-king-of-rock

Inne potrafią być znacznie dłuższe, a ocinanie z nich słów z automatu to już robi totalny bezsens a tajuego sluga.

Jakby dodać do takiego sluga jeszcze ID, to już jest totalna sieczka, a kontrolować tego nie mam czasu za każdym razem.

I wierzę, że bardziej taki slug szkodzi niż pomaga w czymkolwiek, dlatego wzorem wielu "dużych" wolałbym zastąpić to jakimś kluczem.

W innych częściach URL (np. kategorie), to już mniejsze zło. Bo sam je wymyślam, nie są generowane z automatu, są krótkie (najwyżej 2 słowa).

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Czy każdy artykuł ma unikalne id w bazie? Zapewne ma, więc zostawiłbym po prostu:

adres.com/12345

albo

adres.com/kategoria/12345

gdzie 12345 to id nadane przez bazę danych automatycznie przy dodawaniu rekordu.

I na to przekierowania 301 w PHP jak tylko żądanie jest z REQUEST_URI, które nie pasuje do schematu nowego urla.

Nie tworzyłbym dodatkowych kluczy, gdy baza już sama sobie takowe nadała.

Odnośnik do komentarza
Udostępnij na innych stronach

Czy każdy artykuł ma unikalne id w bazie? Zapewne ma, więc zostawiłbym po prostu:

adres.com/12345

albo

adres.com/kategoria/12345

No i tak właśnie planuję: adres.com/kategoria/12345

Ja już mam całe przekierowanie napisane i przetestowane, działa OK. Teraz tylko wdrożyć.

Każdy artykuł u mnie ma kilka kluczy wg których mogę go identyfikować.

Ma ID (auto inciment), ma generowany długi klucz (19 znaków), ma klucz krótszy (10 znaków), generowany na podstawie daty artykułu, i jakies tam jeszcze służące do innych celów. Wszystkie oczywiście unikalne. Obstawiam klucz 10-znakowy (numerki)

Technicznie to nie ma problemu. Robię w PHP, mysql co chcę. Doświadczenie mam spore. Ale to SEO mnie wykańcza, coś jak Urzędy skarbowe dla firm. Nie dość, że zmiany co chwilę, to jeszcze róźnie interpretowane. I zamiast zająć się rozwojem firmy (strony), to człowiek połowę czasu traci, żeby się dostosować do coraz to nowych reguł. W firmie też biurokracja pochłania masę czasu, czy ci się to podoba to czy nie. A na koniec i tak przyjdzie US i jak zechce to dziurę ci znajdzie i potrafi wykończyć.

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Ja bym wykorzystał id z autoincrementa. Zapewne są krótsze niż ten generowany 10 liczbowy, ale jeśli oba są liczbą całkowitą to w sumie nie ma to znaczenia i staje się to kwestią kosmetyczną. Grunt by to nie było przyrównywania ciągów znaków jak do tej pory. A klucz z pierwszego posta na taki mi właśnie wyglądał.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja bym wykorzystał id z autoincrementa. Zapewne są krótsze niż ten generowany 10 liczbowy, ale jeśli oba są liczbą całkowitą to w sumie nie ma to znaczenia i staje się to kwestią kosmetyczną. Grunt by to nie było przyrównywania ciągów znaków jak do tej pory. A klucz z pierwszego posta na taki mi właśnie wyglądał.

Klucz jest numeryczny, więc nie ma problemu. Zresztą i tak to mocny dedyk mało obciążony, więc nie ma problemu z wyrabianiem się bazy, w dodatku z dobrze ustawionym memcached.

Tak czy siak, dzięki za rzeczową konwersację. Człowiek czasem potrzebuje potwierdzenia własnych pomysłów. A z żoną pogadać akurat o takich sprawach się nie da :)

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Cześć,

Mam problem chciałbym zrobić przekierowanie w pliku .htaccess
Domena:

https://www.albatros.gda.pl/
//Rewrite to www
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^abatros.gda.pl[nc]
RewriteRule ^(.*)$ https://www.abatros.gda.pl/$1 [r=301,nc]

Po dodaniu tego kodu do pliku nic się nie dzieje. 0 reakcji.
Plik htaccess znajduje się obok index.html
Gdzie popełniam błąd?

Serwer może nie obsługiwać pliku .htaccess ?

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

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

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • 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