2012-11-22 14 views
7

Vorrei riscrivere gli URL con htaccess a URL meglio leggibili e utilizzare la variabile $ _GET in PHP
A volte uso un sottodominio in modo che debba funzionare con e senza. Inoltre, le variabili non sono necessarie nell'URL. Prendo un massimo di 3 variabili nell'URL

l'URL sub.mydomain.com/page/a/1/b/2/c/3 dovrebbe portare alla sub.mydomain.com/page.php?a=1&b=2&c=3 e l'url sub.mydomain.com/a/1/b/2/c/3 dovrebbe portare a sub.mydomain.com/index.php?a=1&b=2&c=3 dove $_GET['a'] = 1

sono arrivato fino a questo dopo aver cercato e cercando molto

RewriteEngine on 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4&$5=$6&$7=$8 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3&$4=$5&$6=$7 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4&$5=$6 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3&$4=$5 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)$ $1.domain.com/$2.php [L,QSA,NC] 

ma ciò che ottengo è un errore del server non trovato

non sono così bravo in questo modo forse supervisiono qualcosa.
Inoltre mi piacerebbe che funzionasse con e senza una barra alla fine

Devo utilizzare RewriteCond e/o impostare alcune opzioni?

Grazie in anticipo.

+3

Anziché eseguire questa suddivisione in mod_rewrite, perché non avere una semplice regola di catchall ('RewriteRule^(. *) $ Index.php? P = $ 1') e quindi analizzare l'url come si vorrebbe in php . La maggior parte dei CMS e dei framework Web lo fa in questo modo, poiché è più flessibile, più facile da gestire e non dipende da Apache. –

+0

@LieRyan e poi a un massimo di 9 variabili, buona idea proverò la volta successiva che ho avuto lo stesso problema. – Dediqated

+0

Non posso fare a meno di dire ... Q-Dance FTW! –

risposta

7

Quando si utilizza RewriteRule, non si include il nome di dominio nella riga. Inoltre, assicurati di attivare prima RewriteEngine. Come questo:

RewriteEngine On 
RewriteRule ^([^/]+)/([^/]+)$ index.php?$1=$2 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?$1=$2&$3=$4 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?$1=$2&$3=$4&$5=$6 

La prima linea riscriverà sub.mydomain.com/a/1 a sub.mydomain.com/page.php?a=1, il secondo riscritture sub.mydomain.com/a/1/b/2-sub.mydomain.com/page.php?a=1&b=2, e così via.

+0

Sì, grazie che funziona alla grande! Il mio male, RewriteEngine è stato attivato. Modificherò la domanda e la inserirò nel blocco di codice. – Dediqated

Problemi correlati