-
Mod rewrite sbagliato
Salve, sto creando un servizio di tinyurl. Ho pensato di usare il mod rewrite, ma non l'ho mai usato e non mi funziona. Ho scritto:
Codice PHP:
RewriteEngine on
RewriteRule /([^/]+) urls.php?url=$1
Il servizio mi crea un url del genere:
Codice:
http://gabryhacker.altervista.org/fwvl889zdo7j
Ma se ci vado mi da un 404, perchè?
Dovrei trasformare l'url da http://gabryhacker.altervista.org/fwvl889zdo7j a http://gabryhacker.altervista.org/urls.php?url=fwvl889zdo7j
-
A me funge benissimo, prova comunque così:
Codice PHP:
RewriteEngine On
RewriteBase /
RewriteRule ^/([^/]+)$ urls.php?url=$1
-
Ho provato ma continua a darmi errore 404, non reindirizza su urls.php
-
Codice:
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9]*)$ urls.php?url=$1 [L]
:wink:
-
Mi viene spontanea questa domanda (dopo aver visitato il sito): esiste la pagina urls.php e si trova nella root?
Codice PHP:
RewriteEngine On
RewriteBase /
RewriteRule ^/([^/]+)$ /urls.php?url=$1
Questo o quello di biccheddu nemmeno funzionano?
-
Di nuovo Miki92 all'attacco sull'htaccess -sigh- e sempre gli stessi errori :roll:
- RewriteBase non è necessario, ed a volte disturba
- urls.php cade sotto quella regola, quindi si forma un ciclo di riscrittura infinito
- urls.php deve esistere, ed ovviamente mod_rewrite deve essere attivato dal pannello di controllo
La regola corretta è quasi quella proposta da Biccheddu, che non va a riscrivere all'infinito, ma usa l'asterisco, che permette sequenze vuote e quindi "matcha" con il nome del sito. La riscriverei in
Codice:
RewriteEngine On
RewriteRule ^(\w+)$ urls.php?url=$1
Se vuoi limitare di più il tipo di "piccolo url", cambi il \w in qualcosa di più preciso, e.g. \w{3,10}+
Senza RewriteBase, senza barra davanti, e soprattutto che eviti il ciclo infinito. Miki92, cerca di ricordartelo per la prossima volta e prova le cose prima di suggerirle (errate).
-
Grazie dread per la risposta. Purtroppo mi si è rotta la scheda video dell'altro pc e i files li avevo lì, quindi devo aspettare per rimettere tutto online. Vi farò sapere