Skocz do zawartości

Przekierowanie 301 starych podstron z parametrami na nowe podstrony


rectus-reklama

Rekomendowane odpowiedzi

Zmieniłem skrypt na stronie z Quick Carta na Prestę, chciałbym przekierować stare podstrony 301-ką na nowe z tymi samymi produktami.

W starych adresach były znaki zapytania np. www.kubkionline.pl/?regulamin,4

W związku z tym przekierowanie 301 nie działa

Redirect 301 /?regulamin,4 /regulamin

Jak to obejść ?

Odnośnik do komentarza
Udostępnij na innych stronach

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

że stron już fizycznie nie ma, po wejściu ze starego linka ze znakiem zapytania ładuje się główna strona zamiast 404.

Najwidoczniej tak działa Url Routing silnika serwisu, więc przekierowania możesz też ustawić na sztywno lub nawet dynamicznie w pliku index.php.

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

Ponieważ jeśli nie ma nic przez "?" to to traktowane jako odnośnik do skonfigurowanego DirectoryIndex - czyli np. index.html - dla tego nie wyświetla się strona 404.

Przez co musisz dać

RewriteCond %{QUERY_STRING} ^regulamin,4$
RewriteRule .* regulamin [R=301,NC,L]

W teorii powinno zadziałać, ale powinieneś już się zorientować co i jak.

Odnośnik do komentarza
Udostępnij na innych stronach

Cytując dokumentację mod_rewrite:

When you want to erase an existing query string, end the substitution string with just a question mark.

W przypadku {QUERY_STRING} po przekierowaniu na końcu dodawane są zawsze parametry zapytania (wszystkie parametry począwszy od znaku zapytania z nim włącznie, tak więc w Twoim przypadku ?regulamin,4). Parametry te przestaną być przekazywane w momencie, gdy w RewriteRule dodasz na końcu znak zapytania.

W przypadku {REQUEST_FILENAME} wygląda to podobnie. Dlatego osoby np. przekierowujące błędy 404 na inny adres w ten sposób:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://www.example.com [L,R=301]

powinny się zastanowić, czy aby na pewno działa to tak, jak sobie zakładały.

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