Permalinks ( Bezpośrednie linki ) – to odnośniki do twoich postów, kategorii i innech stron na twoim blogu. Domyślnym linkiem w WordPress jest struktura :
http://www.TWOJADOMENA.pl/?p=123
Nie od dzisiaj wiadomo, że google lubi ładne linki, a nie takie, jak wyżej. Dodatkowo dobrze jest, jeśli szukany tytuł artykułu widnieje w linku. Na przykład na moim blogu:
http://netbloger.eu/110/kurs-wordpress-dla-zielonych/.
Pewnie już zauważyłeś cyfrę 110 w środku linku. Jest to ID postu, a umieszczam go w moich linkach opiszę pod koniec artykułu.
Aby edytować linki prowadzące do twoich wpisów nie musisz instalować żadnej wtyczki. Funkcja edycji linków jest wbudowana w WordPress. W tym celu wybierz z panelu administracyjnego Ustawienia i Bezpośrednie odnośniki ( Permalinks ). Wyświetlą ci się Ustawienia bezpośrednich odnośników. Możesz wybrać jeden z sugerowanych linków i kliknąć zapisz zmiany. Poniżej przykładów znajdź Własny format. tam możesz wybrać swój własny schemat.
Możesz wybrać zmienne spośród:
- %year% ? dodaje rok, na przykład 2009
- %monthnum% ? dodaje miesiąc, na przykład 09
- %day% ? dzień miesiąca, na przykład 27
- %hour% ? godzinę dnia, na przykład 15
- %minute% ? dodaje minutę, na przykład 47
- %second% ? dodaję sekundę, na przykład
- %postname% ? dodaje nazwę twojego postu ( jeśli chcesz używać samego postname, możesz mieć problemy tylko w jednym przypadku. Jeśli używasz wersji starszej, niż 2.0
) - %post_id% ? dodaje unikalny numer do postu
- %category% ? dodaje nazwę kategorii
- %author% ? dodaje autora wpisu
Dla przykładu, jeśli chcesz, aby w linku był wyświetlany rok, miesiąc, i nazwę postu, link będzie wyglądał tak: /%year%/monthum%/%postname%/
Jeśli chcesz używać tylko /%postname% aby twój link wyglądał w ten sposób: www.TWOJADOMENA.pl/nazwawpisu/ Skonfiguruj plik .htaccess wklejając poniższy kod.
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} ^wp-content.* RewriteCond %{REQUEST_FILENAME} ^wp-admin.* RewriteCond %{REQUEST_FILENAME} ^wp-include.* RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
UWAGA: ten kod nie zawsze działa poprawnie, szczególnie w innych strukturach, dlatego rekomenduję Ci pobranie mojego pliku htaccess stąd: http://netbloger.eu/materialy/htaccess
Później prześlij plik na serwer do głównego katalogu WordPressa i zmień nazwę na .htaccess. Wtedy wszystkie linki i przekierowania będą działać poprawnie.
Jednak chciałbym ci przedstawić strukturę linków najbardziej przyjaznych z wyszukiwarkami. Przykłady takich linków możesz zauważyć na moim blogu. Na przykład http://netbloger.eu/110/kurs-wordpress-dla-zielonych/
Analogicznie zmienna, jaką wpiszesz w twoich bezpośrednich odnośnikach będzie wyglądała w ten sposób: /%post_id%/%postname%/
Ta struktura sprzyja wyszukiwarkom, ponieważ pomaga w przekierowaniach 301. Jeśli nie wiesz o co chodzi, po prostu zaufaj najlepszym blogowym milionerom, którzy stosują tę strukturę i potwierdzają, że to na prawdę działa
. Myślę, że warto z tego skorzystać.
Przekierowanie 301 jest najefektywniejszym i przyjaznym wyszukiwarkom sposobem przekierowania stron. Więcej na ten temat możesz dowiedzieć się TUTAJ.
UWAGA!
Jeśli prowadzisz już blog dłuższy okres czasu i chciałby zmienić linki równocześnie nie tracąc starych, przeczytaj krótki poradnik jak tego dokonać
Często jednak „ładne linki” nie działają poprawnie, ponieważ na serwerze nie działa mod_rewrite lub jest wyłączony. Znanym problemem z mod_rewrite spotkamy się na hostingu HOME.PL.
Dzieje się tak dlatego, że home posiada własny serwer Ideawebserwer. Jest on prawie taki sam, jak Apache, jednak prawie robi wielką różnicę. Chociaż home.pl naprawiło już kilka błędów, użytkownicy dalej mają problemy. Aby włączyć mod_rewrite, musisz zamienić jedną linijkę w pliku „/wp-includes/vars.php” na twoim serwerze. znajdź linijkę:
$is_apache = ( strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') || strstr($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') ) ? 1 : 0;
I zamień ją na:
$is_apache = ( strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') || strstr($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') || strstr($_SERVER['SERVER_SOFTWARE'], 'IdeaWebServer')) ? 1 : 0;
Później wróć do edycji pliku .htaccess i skonfiguruj prawidłowo jak wyżej. Jeśli nie posiadasz pliku .htaccess na serwerze, pobierz go razem z kodem z mojego bloga tutaj: http://netbloger.eu/materialy/htaccess
Jeśli dalej masz problemy z linkami, napisz w skomentuj ten wpis lub wyjaśnij mi swój problem tutaj: http://netbloger.eu/zadaj-pytanie/. Gwarantuję, że odpowiem jak najszybciej




{ 43 comments… read them below or add one }
A co się stanie, jeśli zmienię ustawienia, gdy już blog działa i ma jakieś linki do niego?
Będzie zonk? Oczywiście mogę ustawić przekierowanie, ale to jest żmudna robota dla każdej ze 100stron.
Dlatego właśnie wychodzi nam na przeciw wtyczka http://wordpress.org/extend/plugins/permalinks-moved-permanently/. Jest to świetna wtyczka i w sumie to o tą wtyczkę mi chodziło, a nie permalinks migrator. Działa ona na tej zasadzie, że jeśli klikniesz w stary link, wtyczka automatycznie przekierowuje na nowy link. Także, jeśli już Twój blog działa i widzę, że masz całkiem sporo wpisów i zanim google by zaindeksowało wszystkie odnośniki, sporo czasu by minęło. Dlatego sugeruję zainstalować wtyczkę, ponieważ w te linki naprawdę warto się pobawić
Aktualnie tworzę mały serwis oparty na wordpressie i mam pytanie odnośnie pliku .htaccess. Otóż zmieniłem plik vars.php według powyższych wskazówek i /%post_id%/%postname%/ zaczęło działać prawidłowo. Czy w związku z tym plik .htaccess jest nadal konieczny? Hosting na home.pl.
Jeśli wszystko działa poprawnie, to nie trzeba nic zmieniać. Plik .htaccess pozwala na samodzielne konfigurowanie niektórych ustawień serwera (w tym przyjaznych linków) Mój plik .htacces zawiera ustawienia, dzięki którym mod_rewrite działa poprawnie i przyjazne linki będą działać poprawnie.
Tak jak piszę, .htaccess służy do samodzielnego konfigurowania, natomiast home.pl mogło już coś zmienić i jest ok.
Prawdopodobnie plik .htaccess sam się zaktualizował, kiedy ustawiłeś swój format linków. Żeby zobaczyć .htaccess, trzeba zaznaczyć w swoim kliencie FTP „pokaż ukryte pliki”.
Dziękuję za odpowiedź. Poprawka w pliku vars.php była konieczna, i jeśli nie ma takiej potrzeby to zostawiam plik .htaccess bez zmian. A to stronka, o której mówiłem http://www.360.rev.pl
.
Witaj,
Mam problem w powyższej tematyce. Otóż postawiłem już ponad 10 WordPressów na netarcie.pl ale tym razem stawiam na serwerze osiedlowego providera i serwis http://wordpress1.isk.net.pl/ działa tylko na domyślnym ustawieniu linków. Jakakolwiek zmiana w stronę przyjaznych linków powoduje błąd który powinien Ci się pokazać po kliknięciu na jakąkolwiek podstronę.
Zakładając, że Twoja porada mi pomoże, jak to się ma do aktualizacji Wordpressa automatycznej? Ten plik nie zostanie nadpisany nowym? I zmiana będzie potrzebna każdorazowo po aktualizacji?
Pozdrawiam
Znalazłem jeszcze takie rozwiązanie:
/index.php/%sample-post%/
i ono działa. Choć wolałbym jednak bez tego /index.php mieć strukturę. Przykładowa strona błędu wygląda tak: http://wordpress1.isk.net.pl/o-mnie/
Także moje pytanie o aktualizację/ ew. inne porady jest aktualne
@Artur Jeśli poprawka w vars.php wystarczyła, to bardzo dobrze. Na home.pl mają ten problem od zawsze, ponieważ używają swojego własnego serwera który jest prawie jak Apache, jednak prawie robi wielką różnicę
Pozdrawiam
@Paweł
Przyjazne linki działają tylko wtedy, gdy dany hosting umożliwia pracę mod_rewrite. Jeśli jest możliwość włączenia mod_rewrite, wtedy po zastosowaniu się do moich wskazówek w tym tutorialu wszystko będzie działało poprawnie. Błąd wynika z tego, że mod_rewrite jest wyłączony oraz plik htaccess nie aktualizuje poleceń wydawanych w WordPress odnośnie linków. Zalecam pobrać plik htaccess z mojego bloga z gotowy kodem włączającym mod_rewrite.
Jeśli chodzi i aktualizacje automatyczne, to nic się nie dzieje. Nie wszystkie pliki w WordPress przy aktualizacji są zamieniane. Zawsze ustawienia pozostają bez zmian. Oczywiście zaleca się zrobić back-up bazy przed aktualizacją i to wszystko. Ustawienia jak najbardziej zostaną takie same
@Paweł
Jeśli chodzi o porady, zachęcam do zapisania się na biuletyn blogMASTERA.
Zaczynam powoli budować listę i będę wysyłał tam naprawdę cenne porady
Pozdrawiam
Witaj,
Pobrałem Twój htaccess, po próbie zmiany struktury linków otrzymałem info „Teraz należy zaktualizować plik .htaccess.”.
Otworzyłem więc plik vars.php i zamieniłem linijki. Następnie zawartość pliku .htaccess (w głównym katalogu instalki wordpressa) została ustalona na:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^wp-content.*
RewriteCond %{REQUEST_FILENAME} ^wp-admin.*
RewriteCond %{REQUEST_FILENAME} ^wp-include.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Ponowna próba zmiany linków na przyjazne i znowu komunikat o konfiguracji.
Próbowałem się dopisać do newslettera ale otrzymałem komunikat
BŁĄD: Nieprawidłowe odwołanie.
PS. Super serwis, bardzo mi się przyda jak tylko znajdę czas na wczytanie się
@Paweł Dzięki za info, faktycznie był błąd w formularzu. Problem już naprawiony. Można się zapisać tutaj
Pozdrawiam
Ehhh… ok, pod konfiguracją linków mam taki komunikat:
Gdybyśmy mieli prawa zapisu do Twojego pliku .htaccess zostałby on automatycznie zaktualizowany, ale z powodu ich braku musisz dokonać tego ręcznie. Oto zasady mod_rewrite, które powinny się w nim znajdować. Kliknij w dowolnym miejscu w tym polu i wciśnij klawisze CTRL +a , aby zaznaczyć je wszystkie.
To związane z inną sprawą z którą aktualnie się zmagam
@Paweł Edycja pliku vars.php jest konieczna tylko na hostingu home.pl ponieważ home.pl uzywa swojego serwera IdeaWebServer zamiast apache, a wordpress jest napisany pod Apache, dlatego trzeba zmienić plik vars.php. W innym wypadku nie potrzeba tego zmieniać ponieważ może Ci nawet zaszkodzić. Natomiast spróbuj wkleić TYLKO poniższy kod do pliku .htaccess:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
i zmienić dopiero strukturę na /%post_id%/%postname%/. Potem już proszę nic nie konfigurować
Niestety Szymonie,
Przykładowo http://wordpress1.isk.net.pl/129/krzysztof-nalepa-w-prefabecie/ nie daje podstrony.
(zrobiłem według Twojego najnowszego komentarza)
PS. Jestem już na liście
Pzdr
Czy zmieniłeś linijki w pliku vars.php na poprzednie, pasujące do Apache?
zapytaj na swoim hostingu, czy w ogóle na serwerze jest możliwość włączenia mod_rewrite. Jeśli jest, to linki muszą dobrze działać, jeśli wszystko jest dobrze skonfigurowane, natomiast jeśli hosting nie ma możliwości uruchomienia mod_rewrite, to można kombinować bez mod_rewrite, ale z tym bywa różnie
Można również ustawić strukturę taką:
/index.php/%post_id%/%postname%/
Nie potrzebuje ona mod_rewrite i każda struktura z index.php na początku powinna działać.
Jeśli nie ma innej możliwości, zawsze można z tego skorzystać.
Dziękuję bardzo za te materiały.
Mam serwer na home.pl i ciężko było by samemu to opracować.
Mam wp na hostingu linuxpl.com i jakoś nie udaje mi się z tymi linkami poradzić. Generalnie zmiana schematu linków na mój właśny nawet z .htaccess skutkuje błędem. WP w wersji 2.9.1 i vars.php ta linijka wygląda troszkę inaczej:
$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], ‘Apache’) !== false || strpos($_SERVER['SERVER_SOFTWARE'], ‘LiteSpeed’) !== false);
strpos a nie strstr
W każdym bądź razie dodanie index.php na początek pomaga.
@ btz
Proszę nie zmieniać kodu w vars.php jeśli nie posiada Pan hostingu na home.pl
Zmiana jest wymagana tylko i wyłącznie na hostingu HOME.PL. Na innych hostingach nie zmieniamy kodu. Dlatego jeśli Pan zmienił kod, proszę przywrócić znowu plik vars.php
Wtedy po utworzeniu pliku .htaccess proszę zmienić linki i wszystko powinno działać.
ps: testowałem strukturę przyjaznych linków na 2 domenach i działały dobrze z moim plikiem .htaccess
Nie wierzę, że to będzie działać!
@ roulette strategy
nie musisz wierzyć, jednak to jest fakt, potwierdzony przez profesjonalnych blogerów. Sam widzę dużą poprawę, ponieważ przyjazne linki już dość długo testuję.
Witam
Posiadam konto na home.pl i chciałbym naprawdę pozbyć się index.php z adresu ale na żaden z wyżej opisanych sposobów nie działa mi to poprawnie.
W wordpresie chciałbym aby linki wyglądały tak: /%postname%/ lecz działają tylko tak: index.php/%postname%/
Plik vars.php wygląda tak:
———–
…
$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], ‘Apache’) !== false || strpos($_SERVER['SERVER_SOFTWARE'], ‘LiteSpeed’) !== false);
…
——————–
chyba w tym miejscu należy wprowadzić zmiany tylko różnią się one nieco z opisem powyżej i może robię tutaj jakiś błąd.
W czym tkwi mój błąd, kiedy mam zmienić wyświetlanie linków z index.php/%postname%/ na /%postname%/. Przed modyfikacją pliku vars czy po, przed skopiowaniem pliku .htaccess na dysk czy po, a może to nie ma wcale znaczenia?
Hej,
Eh… Bujam się od 20 godzin z wordpressowskimi permalinkami na linuxpl.com i powoli mam dość. Wordpress opakowany pluginami…
Not Found
The requested URL /X was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Postawiłem drugiego żeby mieć pewność. Wszystko robię recznie przez ftpowanie .htaccess, chmod dobry, zmiany w ustawieniach wordpressa nie wpływają _w ogóle_ na zawartość .htaccess (na chmod 666) też.
Jak u kolegi powyżej, index.php/X działa, czyli coś ewidentnie z mod_rewrite. Jak trochę zacząłem zmieniać RewriteBase (z / na /xxx/wordpress/) to ostatecznie każdy permalink mnie odwołuje do domeny głownej. (wordpress jest w domena.pl/xxx/wordpress/)
Porafi napsuć krwi ten mod_rewrite…
Cześć,
to genialnie proste. Używam wp3.0 i wstawiłem /%post_id%/%postname%/
Wczesniej zainstalowalem sugerowanego Permalinka.
Zadziałało od razu bez żadnych problemów. Zobaczymy jak będą wyglądać statystyki
Wielkie dzięki NETbloger!
ps. do pełni szczęscia brakuje mi jeszcze aby w pluginie WassUp pojawiały się nowe piękne linki a nie np. /?page_id=134
Świetne porady. Mam nadzieję, że cały czas będzie prowadził tego bloga.
właśnie go reaktywuję ;]
Hej,
Mam problem a nawet 3 w małżeństwie wordpressa z home, bo wszystkie (chyba) sprowadzają się do jednego.
1. Przy tworzeniu podstron, program mi nie rozszerza permalinków, nie tworzy żadnych odnośników na stronie. Kiedy próbuję pomóc mu ręcznie, to dostaję w prezencie błąd 404.
2. nie mogę zrobić na stronie odsyłaczy do etykiet. Próbowałam już na wiele sposobów i żaden nie załapuje. Linki tworzone do stron działają bez zarzutów.
3. Kiedy próbuję ustawić permalinki w bardziej przyjaznej dla pamięci formie, też pojawia mi się błąd 404.
Czy te wszystkie moje problemy mogą być związane z tym, który opisałeś? Czy też mamy do czynienia z nowym „udogodnieniem”?
Nie jest to oczywiście problem samego motywu, bo to zostało już sprawdzone.
O ile dobrze pamiętam, jakiś rok temu home.pl uporało się już z problemami mod_rewrite. Już ponad rok nie korzystam z usług hostingowych home.pl, więc nie wiem jak sytuacja teraz wygląda. hmm, Sprawdź dokładnie plik .htaccess – czy zawiera takie same komendy jak w moim – przykładowym. Możesz podać adres strony, na której problem występuje?
dzieki, poprawka z varsami bezcenna
Świetny artykuł. Dzięki wielkie!
a jak zmienić np: http://netbloger.eu/110/kurs-wordpress-dla-zielonych/.
na http://netbloger.eu/110/kurs+wordpress+dla+zielonych/.
chce przenieść starą stronę w htmlu na wordpress
@ PIT
wystarczy, że zainstalujesz wtyczkę Permalinks Moved Permanently. Dzięki niej nie będziesz miał problemu z permalinkami podczas przenoszenia strony
ja mam na localhost na Wampserver i nie działa. Przenosi mnie na główną stronę localhosta
@Paweł
Niestety nie mam wielkiego doświadczenia z Wampserwerem, więc nie jestem w stanie Ci pomóc.
Zrobilem tak jak napisales i pokazuje mi link jako: http://www.mojastrona.pl/category/literatura i teraz to slowo „category” nie pasuje mi tutaj.
ok już mam: WP No Category Base
Witam,
Miałem bezpośrednie linki /%postname%.
Wpisy wyświetlam nie na stronie „index.php”, tylko mam stronę „home.php” i z niej przejście do strony „blog.php”. Na stronie „blog.php” wyświetlały się wpisy dzięki pętli:
Zainstalowałem wtyczkę All In One Seo Pack, a tam są inne formułki dla nazw linków. No i ja ją włączyłem w panelu admina i od tej pory nie mam na stronie „blog.php” widocznych wpisów. Ale jak ręcznie wpiszę link do posta w przeglądarkę, taki jaki był wcześniej, to wyświetla post.
Umiesz coś doradzić? Bo już kilka godzin siedzę nad tym i lipa.
Witaj,
Możesz podać adres twojej strony?
Witam,
Strona gozdzikowo.com, strona z blogiem to http://gozdzikowo.com/w-naszym-ogrodzie. Aktualnie strona z blogiem wyświetla jej wypis, ale nie posty.
Dziękuję za mega szybką reakcję
Na razie nie ma za co dziękować
Możesz jeszcze raz opisać problem jak najprościej się da? Napisz do mnie na email: kontakt@netbloger.eu Rano postaram się rozwiązać problem. Dobranoc
Mój problem nieaktualny – pomogło ponowne wgranie na serwer pliku z kodem i zmiana jego nazwy. Głupie, nie wiem czemu tak, ale pomogło
Pozdrawiam
Właśnie zauważyłem
W PHP często nawet białe znaki potrafią narobić niezłego bigosu 
Pozdrawiam