Przy dużym katalogu automatyzacja pomaga zestawić dane, ale nie może samodzielnie decydować o przekierowaniach. Poniżej metoda budowy rejestru: crawl, kandydaci dopasowań, ręczna weryfikacja i test każdej aktywowanej reguły.
Krok 1: Eksport pełnej mapy URL ze starego sklepu
Screaming Frog SEO Spider → Internal → Export → All.
Interesują Cię kolumny:
Address(pełny URL)Status Code(chcesz tylko 200)Indexability(filtrujesz „Indexable”)H1-1(tytuł strony — przydatny do matchowania z nową strukturą)Meta Description 1
Eksportuj do CSV i zachowaj surowy plik jako punkt odniesienia. Liczba wierszy zależy od produktów, paginacji, filtrów, tagów, wariantów oraz adresów technicznych — nie zakładaj jej na podstawie samej liczby SKU.
Krok 2: Eksport nowej struktury z docelowej platformy
W Shoper: Panel → Produkty → Eksport → format CSV. Eksportujesz:
- ID produktu
- Slug URL (jeśli Shoper go generuje)
- Nazwa produktu
- Kategoria
Jeśli Shoper jeszcze nie ma URL-i (nowy sklep w trakcie konfiguracji) — generujesz je na podstawie nazwy produktu.
Krok 3: Automatyczne matchowanie — Python
import pandas as pd
from fuzzywuzzy import fuzz
old_urls = pd.read_csv('old_crawl.csv')
new_urls = pd.read_csv('new_products.csv')
def find_best_match(old_name, new_df):
scores = new_df['product_name'].apply(
lambda x: fuzz.token_sort_ratio(old_name, x)
)
best_idx = scores.idxmax()
return new_df.loc[best_idx, 'url'], scores[best_idx]
results = []
for _, row in old_urls.iterrows():
new_url, score = find_best_match(row['H1-1'], new_urls)
results.append({
'old_url': row['Address'],
'new_url': new_url,
'confidence': score
})
df_results = pd.DataFrame(results)
# Eksport do weryfikacji ręcznej
df_results[df_results['confidence'] < 85].to_csv('needs_review.csv')
df_results[df_results['confidence'] >= 85].to_csv('auto_matched.csv')
Próg podobieństwa służy wyłącznie do kolejności ręcznej weryfikacji. Wynik algorytmu nie potwierdza zgodności intencji, historii linków ani statusu produktu, więc żaden wiersz nie powinien trafić do rejestru wykonawczego bez decyzji człowieka.
Krok 4: Ręczna weryfikacja niskiej pewności
needs_review.csv — to są URL-e, gdzie algorytm nie był pewny. Otwierasz w Excelu, sprawdzasz każdy wiersz i ręcznie przypisujesz właściwy nowy URL.
Dla produktu archiwalnego bez semantycznego następcy wybierz HOLD albo właściwy status usunięcia. Nie przekierowuj go automatycznie do kategorii nadrzędnej tylko dlatego, że algorytm znalazł podobną nazwę.
Krok 5: Format końcowy i wdrożenie
Gotowy plik mapowania w formacie:
stary_url,nowy_url
https://starystore.pl/produkt/sofa-szara,https://nowystore.pl/sofy/sofa-premium-szara/
Przykład warstwy wykonawczej
Sposób wykonania zależy od hostingu, CDN-u i aktualnych możliwości platformy. Poniższy fragment pokazuje jedynie kontrakt rejestru; nie jest gotowym zaleceniem infrastrukturalnym ani substytutem testów pętli, łańcuchów i query stringów.
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
const redirects = {
'/stara-kategoria/stary-produkt/': '/nowa-kategoria/nowy-produkt/',
// ... cały mapping
}
async function handleRequest(request) {
const url = new URL(request.url)
const path = url.pathname
if (redirects[path]) {
return Response.redirect(
`${url.origin}${redirects[path]}`,
301
)
}
return fetch(request)
}
Testowanie przed migracją
Przetestuj każdą zatwierdzoną regułę na środowisku kontrolnym oraz osobno sprawdź pozycje HOLD, które nie mogą wygenerować redirectu:
# Skrypt bash do testowania przekierowań
while IFS=, read old new; do
status=$(curl -s -o /dev/null -w "%{http_code}" -L "$old")
final=$(curl -s -o /dev/null -w "%{url_effective}" -L "$old")
echo "$old -> $new | Status: $status | Final: $final"
done < redirects.csv | grep -v "301\|302" > errors.txt
Pusty plik błędów nie kończy odbioru. Sprawdź jeszcze zgodność adresu końcowego z rejestrem, brak pętli i łańcuchów, zachowanie parametrów, odpowiedzi dla HOLD oraz próbę w prawdziwej przeglądarce.
Jak oszacować pracę
Nakład zależy od liczby unikalnych intencji, jakości eksportów, wariantów, historii adresów i odsetka pozycji bez następcy. Oszacowanie powstaje dopiero po crawlu i próbce ręcznej weryfikacji. Automatyzacja skraca porównywanie danych, ale nie zastępuje decyzji SEO ani odbioru technicznego.
Źródła referencyjne i dalsza weryfikacja
Materiały poniżej prowadzą do dokumentacji właścicieli platform i instytucji. Są punktem kontroli aktualności, a nie automatycznym potwierdzeniem każdego zdania w artykule.
- Google Search Central — dokumentacja e-commerce ↗
- Google Search Central — dane strukturalne produktu ↗
Opublikowano: · Zaktualizowano:
Masz pytania do tego artykułu lub chcesz żebym spojrzał na Twój sklep?
Napisz do CyberSolus →