Skocz do zawartości
Leszy

nginx - problem z rewrite

Polecane posty

Mam następujący problem do rozwiązania. Poprzednio trzymałem stronę na lighttpd na której obowiązywały następujące bezpośrednie odnośniki:

/kategoria/nazwa_posta.html

Teraz, po przeniesieniu się na nginx aby takie linki działały musiałem dodać regułę do vhost:

if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}

Co połowicznie rozwiązało problem - wordpress przestał walić 404 przy odsyłaniu do mojego bloga.

Problem nastąpił natomiast z funkcjonowaniem całego skryptu - żadna wtyczka cachująca nie chce działać (na 100% z powodu dopisanego .html )
Aby nie stracić pozycji w google potrzebna mi regułka która usunie rozszerzenie .html tzn taki odnośnik

/kategoria/nazwa_posta.html

z automatu przerobi na

/kategoria/nazwa_posta

Jednak zupełnie nie mam pojęcia jak się do tego zabrać.
Z góry dziękuję za pomoc

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Użyj konwertera rewrite do nginxa na regułach które wygenerował Ci wordpress w .htaccess.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Problem w tym, że wordpress nic mi nie wygenerował (nie mam nawet htacces w roocie) regułkę dopisującą .html znalazłem gdzieś w sieci.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Testowałem kilka wtyczek cache, wszystkie działają jeżeli w konfigu vhosta zakomentuję w/w regułkę. Jeżeli nginx zaczyna dopisywać .html do adresu każda wtyczka cachująca głupieje. Właściwie to pomyślałem, aby nie korzystać już z tych html'ków tylko jakoś te wyrażenia regularne nie chcą się mi wbić do głowy :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Masz wordpressa, który generuje treść dynamicznie, w oparciu o kod i bazę SQL, i dziwisz się, że wtyczki cacheujące głupieją jak widzą, że user odwołuje się do statycznego contentu?

 

Wywal to co napisałeś, wstaw to do vhosta gdzie masz zdefiniowanego wordpressa:

location / {
    try_files $uri $uri/ /index.php?$args;
}

I restart nginxa.

 

Od tego momentu będziesz miał tzw. przyjazne linki, czyli zamiast sklep.pl/promocja.html będzie sklep.pl/promocja, tak jak powinno być od początku. Wystarczy, że skonfigurujesz teraz wordpressa z tą opcją i poprawisz ten cały bajzel, który zrobiłeś do tej pory.

Edytowano przez Archi (zobacz historię edycji)
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No właśnie w tym problem, że linki zdefiniowane jako

/%category%/%postname%.html

działały na lighttpd (wraz z cache) a na nginx nie chcą. Jeżeli teraz ustawie odnośniki jako

/%category%/%postname%

Cache zaczyna działać, problem w tym że strony zindeksowane w google mają te .html na końcu i trzeba to przepisać tak aby to "zjadło" zanim czytelnik trafi na moją stronę gdyż w innym wypadku trafi go 404 prosto w głowę ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×