Skip to content
Fara extensie HTML sau PHP

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:

  1. Accesați Setări → Permalink-uri
  2. Selectați „Titlul postării” pentru URL-uri de forma site.ro/titlu-articol
  3. 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.

Back To Top