Bezpośrednie odnośniki - błąd 404

Witam wszystkich

Zacznę od tego, że jestem zielony w tych kwestiach.

Pewne modyfikacje przy szablonie zmusiły mnie do zmiany bezpośrednich odnośników. Zrobiłem to z poziomu Panelu Admina, używam wordpressa 2.9.2

Nie zdawałem sobie jednak sprawy z konsekwencji takiego posunięcia. Wszystkie moje linki zindeksowane przez Google prowadzą teraz na stronę z błędem 404.

Znalazłem informację o przekierowaniu 301, nie umiem go jednak skonfigurować. Znalazłem także wtyczki, które powinny robić to automatycznie bez dotykania się do .htacces - niestety żadna nie zadziałała.

Używane przeze mnie odnośniki wyglądały tak:

/index.php/%year%/%monthnum%/%day%/%postname%/

Obecnie wyglądają tak (opcja domyślne w Panelu Admina):

http://adresstrony.pl/?p=id artykułu

Prosiłbym o wytłumaczenie krok po kroku jak wykonać przekierowanie ze starych linków na nowe.

Jeśli oba nie są jakoś powiązane to nie da rady. To id musi być generowane na podstawie danych z powyższego linka. Niestety moja znajomość wordpresa jest bliska 0 i bez kodu nic nie poradzę.

A gdybym zmienił obecny wygląd linków na:

/%post_id%/%postname%/

Wtedy w nowych linkach również pojawia się nazwa postu (/%postname%/). Czy to starczyłoby do ustawienia przekierowania ?

Nie, bowiem musisz mieć to miejsce tak jak w oryginalnym linku. Musisz mieć wszystko by mieć to przekierowanie. Chyba, że twój poprzedni link również był generowany.

Nie masz racji. Z tego drugiego linku, który podał (z ID), można bez problemu zrobić przekierowanie w htacces.

Ale zrób przekierowane nie wiedząc jak się ma id do tego linka. Zakładając że w ogóle taka zależność jest. By zrobić przekierowanie musisz podać dokładny link jaki ma być przekierowywany.

Np gość wchodzi z linka:

nazwa.pl/index.php/2011/06/26/to_jest_nazwa_tego_czegos/

I jak go chcesz przekierować na:

nazwa.pl/?p=5645

Albo chodź by na:

nazwa.pl/?p=5645/to_jest_nazwa_tego_czegos/

Po prostu to jest niewykonalne. Przekierowanie musi mieć dokładne miejsce na jakie ma przekierowywać. O ile nie chcesz każdego przekierowania pisać ręcznie, musisz mieć jakąś zależność.

Nie masz racji.

Kod będzie wyglądał (w zależności od ostatecznego wyglądu linka, którego nie podał). Przyjmuje, że link to

htaccess:

RedirectMatch 301 ^index.php/([0-9]+)/(.*)$ http://adresstrony.pl/?p=$1

A no rzeczywiście mój błąd. Dalej patrzałem na pierwszy link.

Dzięki za odpowiedzi. Ustawiłem nowy format linków według schematu:

/index.php/%post_id%/%postname%/

Przekierowanie podane przez “pdziak”, rzeczywiście działa.