Accesibilitatea web (web accessibility) se referă la practica de a construi site-uri care pot fi…

URL-uri fără extensie HTML sau PHP: cum să implementezi URL-uri curate
URL-urile curate, fără extensii de fișier precum .html sau .php, au devenit standardul în web design modern. Adrese de tipul site.ro/despre-noi sunt mai estetice, mai ușor de reținut și, din perspectivă SEO, mai prietenoase față de site.ro/despre-noi.html sau site.ro/about.php. Eliminarea extensiilor de fișier din URL-uri îmbunătățește experiența utilizatorului și oferă flexibilitate în schimbarea tehnologiei backend fără a modifica adresele publice.
Tehnic, eliminarea extensiilor din URL-uri se realizează prin configurarea serverului web pentru a interpreta și servi corect cererile fără extensie, redirecționând sau rescriind URL-urile după regulile definite în fișierul .htaccess (pentru Apache) sau nginx.conf (pentru Nginx). Procesul implică și gestionarea cazurilor în care adresele vechi cu extensii sunt accesate, pentru a evita erorile 404 și a redirecționa spre URL-urile curate.
Acest articol explică metodele de implementare a URL-urilor fără extensie pe diferite platforme web.
Avantajele URL-urilor fără extensie
- Estetică și profesionalism, URL-uri mai curate și mai ușor de comunicat verbal sau în tipărituri
- Flexibilitate tehnologică, puteți schimba PHP cu Node.js sau alt backend fără a modifica URL-urile publice
- SEO, URL-urile curate sunt ușor preferate față de cele cu extensii, deși impactul direct este minor
- Protecție informații tehnice, nu revelează tehnologia de backend utilizată
Implementare pe Apache cu .htaccess
Eliminarea extensiei .html
RewriteEngine On
# Redirecționare .html spre URL fără extensie
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ /$1.html [L]
# Redirect permanent de la .html la URL curat
RewriteCond %{THE_REQUEST} /(.+)\.html [NC]
RewriteRule ^ /%1 [R=301,L]Eliminarea extensiei .php
RewriteEngine On
# Ascunde extensia .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
# Redirect 301 de la .php la URL curat
RewriteCond %{THE_REQUEST} /(.+)\.php [NC]
RewriteRule ^ /%1 [R=301,L]Implementare pe Nginx
server {
listen 80;
server_name site.ro;
root /var/www/html;
# Încearcă să servească fișierul cu .html sau .php
location / {
try_files $uri $uri.html $uri.php $uri/ =404;
}
# Redirect de la .html la URL curat
rewrite ^(.*).html$ $1 permanent;
}URL-uri curate în WordPress
WordPress gestionează URL-urile curate nativ prin sistemul de permalink-uri:
- Accesați Setări → Permalink-uri
- Selectați „Titlul postării” pentru URL-uri de forma site.ro/titlu-articol
- Salvați setările, WordPress actualizează automat .htaccess
Asigurați-vă că modulul mod_rewrite este activat pe server pentru ca permalink-urile WordPress să funcționeze corect.
URL-uri curate în aplicații PHP custom
Pentru aplicații PHP personalizate, toate cererile pot fi direcționate printr-un fișier index.php central (front controller pattern):
# .htaccess pentru front controller
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]Fișierul index.php primește toate cererile și le direcționează spre funcționalitatea corespunzătoare, generând răspunsul potrivit pentru URL-ul solicitat.
Gestionarea erorilor și a cazurilor limită
La implementarea URL-urilor fără extensie, gestionați corect:
- Paginile de eroare personalizate (404, 403, 500), definite în .htaccess cu ErrorDocument
- Fișierele statice (CSS, JS, imagini), trebuie excluse de la rescrierea URL-urilor
- Directoarele existente, cererile spre directoare nu trebuie rescrise ca fișiere
Implementarea URL-urilor fără extensie este o bună practică modernă care îmbunătățește aspectul și profesionalismul unui site web. Configurarea corectă în .htaccess sau nginx.conf, combinată cu redirecționările 301 pentru URL-urile vechi, asigură tranziția lină fără pierderi de trafic SEO.

