.htaccess rewritecond e rewriterule

Stato
Discussione chiusa ad ulteriori risposte.

black_devil

Utente Silver
10 Giugno 2007
75
13
3
76
Per il progetto che sto portando avanti.
Ho intenzione di modificare l'url dei profili da:
http://nerdz.gotdns.org/profile.php?id=nessuno&pid=1 or
http://nerdz.gotdns.org/profile.php?id=1&pid=1
a:
http://nerdz.gotdns.org/nessuno/1 or
http://nerdz.gotdns.org/1/1
Riscrivibili a seconda comunque del parametro passato come id.
Io ho tirato giù questo, ma funziona solo se abbiamo una false root, cioè:
Codice:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule nerdz/(.*)/(.*) profile.php?id=$1&pid=$2
RewriteRule nerdz/(.*) profile.php?id=$1
Con questa rewrite rule il link è visibile così:
http://nerdz.gotdns.org/nerdz/nessuno/1
Io voglio semplicemente levare il nerdz/ senza andare in contro a loop infiniti e ad internal server error. Grazie ;D
 
Prova con:
Codice:
RewriteRule (\d+)/(\w+) profile.php?id=$1&pid=$2
RewriteRule ([0-9A-Za-z])+ profile.php?id=$1
 
Quando visualizzo qualsiasi pagina

Edit: secondo me era meglio una cosa del genere:
Codice:
RewriteCond %{REQUEST_URI} /profile.php?id=(.*)$
RewriteRule ^(.*)$ /profile.php?id=$1 [L,QSA]

RewriteCond %{REQUEST_URI} /profile.php?id=(.*)&pid=(.*)
RewriteRule ^(.*)/(.*)$ /profile.php?id=$1&pid=$2 [L,QSA]
Ma non va nemmeno questa :\
 
Nada. Ma secondo me c'è solo da sistamare la rewrite cond che ho scritto prima, perché è come se non funzionasse.
Ora è attiva, se vuoi puoi provare.
http://nerdz.gotdns.org/nessuno
o
http://nerdz.gotdns.org/1

Risultato: "Oops! This link appears to be broken." ovvero non va la rewritecond.
 
Con molta pazienza
EDIT: al limite fai come ho fatto io, metti dei prefix.
Tipo, profile-xxx.html, post-123.html, dashroom-xxx.html ecc.
 
ad un simpatico error 500.
Ma ho risolto in questo modo ora:
aggiungiendo un punto al nome utente, altrimenti lui prima mi trovava anche le pagine .php e me le considerava valide all'espressione regolare.
In sostanza così va:
Codice:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.(\d+)$ profile.php?id=$1&pid=$2 [L]
RewriteRule ^(.*)\.$ profile.php?id=$1
Ora ad esempio, il mio profilo è disponibile all'indirizzo:
http://nerdz.gotdns.org/nessuno.
E i vari nerdz all'interno del mio profilo con il numero dopo il punto, es:
http://nerdz.gotdns.org/nessuno.1
Mi ritengo soddisfatto così.
 
Ultimo test, prova con:
Codice:
RewriteEngine on
RewriteBase /
RewriteRule ^([^\.]+)-(\d+)$ profile.php?id=$1&pid=$2 [L]
RewriteRule ^([a-zA-Z0-9]+)$ profile.php?id=$1
 
ah capito.
beh scusa ma fai una cosa tipo:
Codice:
RewriteCond %{REQUEST_URI} [^/]+/[^/]+\.php$ 
RewriteRule (.*)/(.*)\.php$ profile.php?id=$1&pid=$2
RewriteCond %{REQUEST_URI} ^[^/]+\.php$ 
RewriteRule ^(.*)\.php$ profile.php?id=$1
ora sono un pelo occupato dopo al massimo faccio due test
 
Ti ringrazio dell'aiuto, ma penso d'aver già provato quelle regole e non funzionano.
Comunque io mi ritengo soddisfatto così. Ho sistamato il sito secondo le nuove regole e sono a posto così :D
 
Stato
Discussione chiusa ad ulteriori risposte.