ia incearca in loc de ^([^-]*)-([^-]*)-([^-]*)-([^-]*)\.html$
asa
^([0-9]+)-([0-9]+)-([a-zA-Z0-9_-]+)-([a-zA-Z0-9_-]+)\.html$
si ai linkuri site.ro/?anul=.... sau site.ro/index.php?anul=.... ?
Versiune printabilă
ia incearca in loc de ^([^-]*)-([^-]*)-([^-]*)-([^-]*)\.html$
asa
^([0-9]+)-([0-9]+)-([a-zA-Z0-9_-]+)-([a-zA-Z0-9_-]+)\.html$
si ai linkuri site.ro/?anul=.... sau site.ro/index.php?anul=.... ?
Tot citesc despre url rewrite si in mare am inteles, dar in mic nu-mi iese :)
Poate imi explicati si mie pt caz cat de cat concret:
Linkul este de forma:
www.numesite.ro/category.php?id=1 si numele categoriei ar fi "nume categorie"
Vreau sa rescriu linkul (si sa si mearga daca se poate) de forma:
www.numesite.ro/nume-categorie
Am scris in htacces: RewriteRule ^([A-Za-z0-9+_"]+)$ /gallery.php?cid=$1 [L]
si in php: href="nume categorie" (url-urile sunt generate dinamic).
Si acum linkul apare de forma: www.numesite.ro/nume categorie
evident am eroarea: The requested URL www.numesite.ro/nume categorie was not found on this server.
Ce trebuie sa fac ca sa mearga cum vreau eu? si sa apara in link "nume-categorie" nu "nume categorie"?
Nu stiu php, mai inteleg cate ceva din cod dar nu stiu sa scriu cod de la zero, asa ca va rog sa fiti blanzi :))
Salutare Diana,
Pentru:
Ai putea folosi ceva de genul (in cazul in care ai mai multe variabile pe primul loc, pui "cat" ca sa interpreteze category.php)Citat:
numesite.ro/category.php?id=1
Sau in cazul in care nu ai mai multe variabile care sa duca tot acolo:Citat:
RewriteRule ^cat/([A-Za-z0-9-]+)/([0-9]+)?$ category.php?numecategorie=$1&id=$2 [L]
Citat:
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)?$ category.php?numecategorie=$1&id=$2 [L]
Acum sa luam altfel problema. Din link-ul pe care vrei sa il rescrii am doar variabila "id". Tu vrei sa intre numele categoriei. Bun, nu ar fi o problema. Ceea ce ti-am rescris mai sus e in cazul in care folosesti caractere care contin cifre si litere (pentru numele categoriei) si cifre pentru id-ul categoriei.
Hai sa-ti dau un exemplu de cum fac eu rescrierile.
In tabelul din baza de date, unde am categoriile, am pe langa titlul categoriei si titlul categoriei rescris. Astfel pot sa-l denumesc cum vreau eu si sa duca tot acolo fara a fi nevoit sa scot id-ul categoriei. Cand fac rescrierea folosesc doar numele categoriei rescris si o interpretez in locul id-ului.
Link:
-> domeniu.ro/nume-categorie
.htaccess (fara paginare):
-> RewriteRule ^([A-Za-z0-9-]+)/?$ category.php?numecategorie=$1 [L]
.htaccess (cu paginare - poate sa fie si cu extensia .htm):
-> RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)?$ category.php?numecategorie=$1&page=$2 [L]
PHP:
-> Returnez din baza de date id-ul categoriei in functie de numele categoriei rescris si apoi fac alte selectii din db in functie de ce am nevoie pe acea pagina.
EDIT:
Folosesti smarty templates sau nu? Sa-ti dau cateva functii care sa iti modifice link-urile in functie de ce folosesti.Citat:
Ce trebuie sa fac ca sa mearga cum vreau eu? si sa apara in link "nume-categorie" nu "nume categorie"?
Nu stiu php, mai inteleg cate ceva din cod dar nu stiu sa scriu cod de la zero, asa ca va rog sa fiti blanzi
Da, m-am gandit si eu la asta, ca am vazut ca asa se face in wordpress si phpld. Dar cum fac sa rescriu automat categoria?Citat:
In tabelul din baza de date, unde am categoriile, am pe langa titlul categoriei si titlul categoriei rescris. Astfel pot sa-l denumesc cum vreau eu si sa duca tot acolo fara a fi nevoit sa scot id-ul categoriei. Cand fac rescrierea folosesc doar numele categoriei rescris si o interpretez in locul id-ului.
De ex. "nume categorie" sa apara "nume-categorie" in alta coloana? Am gasit ceva in wordpress, dar evident ca nu merge, probabil fac eu ceva aiurea. Ce functie folosesti?
Acum am vazut editarea ta :) Nu folosesc smarty, am gasit un mic si simplu scriptulet care sa-mi faca o galerie de poze cu comentariu dedesubt. Stiu ca-s multe scripturi elaborate, cu url rewrite cu tot, dar eu aveam nevoie doar de ceva f simplu, cu add category si add photo in panoul de administrare.
Ok.
Uite o functie simpla:
O pui pe undeva, ca mai apoi sa o poti chema unde ai nevoie.Citat:
function rewrite_str($string)
{
return preg_replace('#[^A-Za-z0-9_-]#','-',$string);
}
Exemplu de folosire:
- Zicem ca scoatem din db categoriile si avem asa:
- unde folosesti functia rewrite_str($titlu_categorie) vei avea titlu categoriei de forma 'nume-categorie'Citat:
while($row = mysql_fetch_array($result))
{
echo '<a href="domeniu.ro/'.rewrite_str($row["titlu_cat"]).'>'.$row["titlu_cat"].'</a><br>"';
}