Problemă .htaccess rewrite


(Gab) #1
RewriteEngine On
RewriteBase /
RewriteRule ^lista/([a-zA-Z0-9_$\w]+)-(.*)/?$ lista.php?&perm=$1&id=$2
  • Url devine: lista/acesta-este-un-exemplu-IDbGdrs
    Dar dacă am un id cu cratimă, îmi ia doar ultima parte din id după cratimă:
  • lista/acesta-este-un-exemplu-f7d-gd4s, va rămâne doar gd4s

(Ionuț Staicu) #2

Regex le folosești pentru a găsi ceva în baza unui pattern, iar tu nu respecți acel pattern :slight_smile:

Eu aș găsi alt separator (două cratime, un slash) sau aș face în așa fel încât ID-ul să respecte un anumit pattern.


Probabil ai putea face o scamatorie cu ultimele X caractere din string, dar cred că ar fi doar another can of worms.


(Gab) #3

M-am gândit și să schimb cu un alt separator, de exemplu:

RewriteRule ^lista/([a-zA-Z0-9_$\w]+)/([a-zA-Z0-9_$\w]+)/?$ lista.php?perm=$1&id=$2

Dar mi-e să nu am probleme în google, pentru că sunt deja adrese indexate.
Nu știu dacă ar fi ok să fac un redirect 301 la rewrite-ul ce-l vechi…


(Igor Mardari) #4

Ar fi ok.

  • 301, “Moved Permanently”—recommended for SEO

(Gab) #5

Da, asta am făcut.


(Gab) #6

Mai revin cu ceva, am fost de părere că dacă tot este acest subiect deschis, nu mai are rost să fac alt topic.

Am următorul cod:

RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_$-\w]+)/?$ articol.php?perm=$1 [L]

Cum pot face să afișeze pagina cu articol doar dacă pun permalink corect. Vreau să spun că așa poate pune oricine ceva dupa numedomeniu.ro/aici și să facă interogări aiurea în baza de date. Plus de asta, vreau să mai fac încă câteva pagini care să nu aibă legătură cu acel RewriteRul de mai sus, să nu se lege unu de altu, nu știu cum să zic. Am mai pus un RewriteRule pentru căutare și ma duce tot pe articol.php