Cum să redirecționați definitiv (301) toate cele 404 (lipsă) pagini în htaccess

php-tag

Am încercat să găsesc o soluție pentru a rezolva problemele apărute în consola Google, consolă ce semnala faptul că există un număr de pagini lipsă, care nu mai sunt accesibile pe site și generează eroare de tip 404 (lipsă). Am început cu o documentare și am citit multe postări pe bloguri, forumuri, apoi am încercat soluții diferite, dar tot nu am putut găsi o soluție care să funcționeze și să utilizeze doar reguli în fișierul .htaccess fară nimic altceva. În cele din urmă, am găsit ceva care funcționează utilizând doar reguli în fișierul .htaccess utilizând o combinație de instrucțiuni pe care le-am găsit online. Deci, dacă doriți să redirecționați permanent 301 permanent toate erorile de tip 404 undeva la pagina dvs. de pornire aici este codul pentru fișierul .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

Trebuie să vă asigurați că apache-ul are “mod rewrite” activat chiar dacă majoritatea găzduitorilor web au această opțiune activă în mod implicit, iar dacă nu este activă puteți să întrebați furnizorul dvs. de găzduire dacă poate activa aceasta opțiune. Acest cod va redirecționa toate paginile care lipsesc la pagina de pornire (radacina site-ului), totuși dacă doriți să redirecționați către o altă pagină, înlocuiți doar slash-ul / linia finală cu pagina dvs. Web (ceva de tipul /redirectionare.html )

Dacă doriți doar să redirecționați anumite pagini despre care știți că lipsesc pentru ca sunt mutate în altă parte, atunci este utilă o singură linie pentru fiecare pagină din .htaccess:

Trecerea de la Apache la NGINX – configurare Nginx

Apache-vs-Nginx

Spuneam mai devreme care ar fi primii pași pentru Trecerea de la Apache la Nginx. Mai departe mă voi ocupa de configurarea Nginx.

Am avea apoi de configurat Nginx să functioneze cu setările ce erau folosite de Apache. Trebuiesc verificate toate declarațiile de servere Apache și pentru fiecare ar trebui să adăugăm un bloc de instrucțiuni specifice pentru Nginx. Fișierele de configurare pentru serverele de tip Apache se află în structura de fișiere a serverului pe calea:

/etc/apache2/sites-available/

Similar Nginx își ține fișierele de configurare în structura de fișiere pe calea:

/etc/nginx/sites-available/

Este binecunoscut faptul ca în sistemele de operare de tip Linux fișierele de configurare sunt păstrate în folderul /etc . Ele pot fi editate oricând, însă pentru a fi luate in considerare noile setări, serviciile ce folosesc acele fișiere de configurare trebuiesc repornite. Repornirea serviciilor eu o fac folosind comenzi de resetare ce implică init.d. Există și alte modalități în funcție de aroma de linux instalată pe server. Toate operațiunile în folderul /etc se fac folosind un cont de root sau un cont ce are permisuni de a face asta. Așa se face că pentru a reporni Apache eu folosesc comanda (ca root):

/etc/init.d/apache2 restart

iar pentru a reporni serverul Nginx folosesc comanda:

/etc/init.d/nginx restart.

Comenzile pot fi puțin diversificate în sensul că pot opri, pot porni și pot afla statusul unui anumit serviciu. De exemplu pentru Apache comenzile ar fi:

/etc/init.d/apache2 restart – Repornesc serverul Apache
/etc/init.d/apache2 stop – Opresc serverul Apache
/etc/init.d/apache2 start – Pornesc serverul Apache
/etc/init.d/apache2 status – Aflu dacă serverul funcționează și care este statusul lui

Un fișier de configurare pentru Apache arată similar cu acesta:

 

<VirtualHost *:80>
        ServerAdmin webmaster@your_site.com
        ServerName your_site.com
        ServerAlias www.your_site.com
        DocumentRoot /var/www
        <Directory />
             Options FollowSymLinks
             AllowOverride None
        </Directory>
        <Directory /var/www/>
             Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
             AllowOverride None 
             Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
              Order allow,deny
              Allow from all
        </Directory>
         ErrorLog ${APACHE_LOG_DIR}/error.log
             LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
         Alias /doc/ "/usr/share/doc/"
       <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
       AllowOverride None Order deny,allow
             Deny from all
             Allow from 127.0.0.0/255.0.0.0 ::1/128
      </Directory>
</VirtualHost>

 

 

Acesta poate fi urmărit și oarecum replicat în fișierul de configurare pentru Nginx, care inițial este completat de forma:

 

 

server { listen 8000; 
          root /usr/share/nginx/www; 
          index index.html index.htm; 
          server_name localhost; 
          location / { 
                      try_files $uri $uri/ /index.html; 
                      } 
          location /doc/ { 
                       alias /usr/share/doc/; 
                       autoindex on; 
                       allow 127.0.0.1; 
                       deny all; 
                         } 
         }

 

 

Asta dacă scoatem din el toate comentariile.

Trecerea de la Apache la NGINX

Apache-vs-Nginx

Pentru că este o piață liberă în ceea ce privește aplicațiile, apar noi aplicații pe parte de server ce pot face o diferență când este vorba de viteză. În funcțiile de necesitățile unui proiect web, este posibil să fie nevoie de migrarea unui astfel de proiect de la implementarea lui pe un server web de tip Apache la implementarea lui pe un server web de tip Nginx.

Apache si Nginx fac în esență același lucru însă, in anumite situații Nginx ar fi cel ce s-ar mișca mai repede. Odată cu începerea unui proiect web se poate decide o listă de opțiuni de care trebuie să beneficieze un site web sau o aplicație în desfășurare. Deși serverul web Apache este în prezent cel mai popular server web din lume, Nginx câștigă teren foarte rapid. Personal am instalat și configurat servere în ambele variante și se poate observa clar că Nginx se comportă excelent în timp ce utilizează puține resurse. Pentru multe site-uri Web, migrarea la Nginx ar îmbunătăți performanța.

Au fost și situații când s-a cerut trecerea de la Apache la Nginx și am să scriu puțin despre asta mai jos.

Pentru a trece de la Apache la Nginx, cu siguranță nu ar trebui să fie Nginx instalat pe server ci doar Apache. De accea ar trebui instalat Nginx în funcție de sistemul de operare ce se afla pe server. Indiferent de sistemul de operare ar trebui să ne asigurăm că avem un user cu drepturi de instalare pe server ca root sau orice alt user listat in sudoers cu drepturi de root.

Odată ce Nginx este instalat ar trebui să ocolim cumva portul 80 pe care acum asculta conexiunile Apache-ul. Pentru asta trebuie să edităm un fișier de configurare la alegere dintre cele două tipuri de servere pentru că acum ele se blochează ascultând amândouă la conexiunile portului 80.