Aveti cumva idee cum as putea sau daca se poate sa fac linkul acesta:
site.com/viewprofile.php?userid=2
sa arate asa
site.com/adrian
?
Aveti cumva idee cum as putea sau daca se poate sa fac linkul acesta:
site.com/viewprofile.php?userid=2
sa arate asa
site.com/adrian
?
Trebuie sa ai ceva cunostinte PHP/MySQL.
Iar in .htaccess scrii ceva de genu:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ viewprofile.php?username=$1
Asta inseamna ca orice cerere ce contine cel putin o litera, un numar, "-", sau "_" va fi redirectata scriptului viewprofile.php variabilei $_GET[username] .
Exemple:
* site.com/adrian va apela site.com/viewprofile.php?username=adrian
* site.com/adrian-32 va apela site.com/viewprofile.php?username=adrian-32
* site.com/adrian.php nu face parte din regula (apare ".").
Iar in viewprofile.php adaugi ceva de genu:
$uname = addslashes($_GET['username']);
$query = mysql_query("SELECT user_id FROM tabela_cu_userii WHERE user_name = '$uname'");
$fetch = mysql_fetch_array($query);
$userid = $fetch[user_id];
$_GET['userid'] = $userid; // asta in cazul in care $userid se citeste prin $_GET
Acum nu stiu exact daca astea sunt campurile la forumul ce il folosesti.
LE:
Totusi, e mai de preferat ca forumul sa fie intr-un folder, ca asa pot aparea diferite probleme.
Recomand ceva de genul:
RewriteEngine On
^forum/user/([a-zA-Z0-9_-]+)$ forum/viewprofile.php?username=$1 [L]
Sintaxa va fi de forma: site.com/forum/user/adrian
O sa ai ceva probleme cu afisarea imaginilor si altor resurse din document (ex: css, js) ce au calea relativa. O solutie ar fi sa folosesti base href.
Ultima modificare făcută de loco; 9th February 2008 la 15:08.
mai simplu
RewriteEngine On
RewriteRule ^(.*)$ viewprofile.php?username=$1
in php vei avea $_GET['username'] = "adrian" in exemplul tau;
dublutz, dar asa orice cerere va fi redirectata lui viewprofile.php.
Inclusiv index.php, etc.
Eventual de ar fi sintaxa de forma:
RewriteRule ^user-(.*)$ viewprofile.php?username=$1
--> site.com/user-adrian
Ultima modificare făcută de loco; 9th February 2008 la 15:28.
Merci mult de tot. Mi-ati dat mura in gura. Acum voi incerca sa implementez.
Cunostinte PHP/Mysql am. Cu apache stau mai greu.
Nu ai pt ce!
Pare mai dificil la inceput.. dar e relativ simplu.
Bafta.
loco metoda ta..desi mai buna nu merge...nu stiu de ce dar nu are niciun efect.
metoda lui dublutz merge dar asa cum ziceai tu inlocuieste orice, chiar si o pagina cum ar fi site.com/browse.php redirectioneaza la site.com/viewprofile?userid=browse.php
Ar fi trebuit sa mearga.. Am si testat si a mers pe localhost.
Exemplul lui dublutz se poate imbunatati pentru a functiona si in cazul in care exista fisierele la care se face request.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ viewprofile.php?username=$1
Sau prin negatie ("orice caracter in afara de /"), care se spune ca este mai rapid decat metoda "greedy" (.*):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ viewprofile.php?username=$1
Si a doua metoda e OK si in cazul in care se face request la un script din alt director (tocmai din cauza faptului ca apare acel / in negatie).
Daca totusi vrei sa folosesti prima metoda (.*) - insa nu recomand, trebuie sa pui si :
RewriteCond %{REQUEST_FILENAME} !-d
Oricum eu prefer varianta de la sfarsitul postului nr#2.
multumesc din nou pentru raspuns. voi incerca mai tarziu si iti voi spune ce am facut
Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)