Permalinks in Apache si nginx

WordPress permite crearea de URL-uri SEF. Aceasta optiune poate fi controlata din Panoul de administrare > Setari > Legaturi permanente.

Pentru ca URL-urile SEF sa functioneze corect in Apache trebuie sa adaugam in .htaccess urmatoarele linii:

<ifmodule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ – [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</ifmodule>

Daca in schimb folosim nginx treba devine putin mai inaccesibila pentru ca serverul web nginx nu citeste instructiunile din fisierul .htaccess. Daca avem drept de administrare putem gasi totusi o solutie. Ca sa rezolvam problema trebuie sa editam in fisierul nginx.conf blocul server corespunzator domeniului si sa adaugam urmatoarele linii:

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

Cele patru linii vor trimite toate cererile catre fisiere care nu exista fizic catre fisierul index.php, adica exact ce fac regulile mentionate mai sus pentru Apache.