2015-04-21 13 views
5

Devo rimuovere ?id= e &title= da questo URL utilizzando il file .htaccess.Come rimuovere ID e titolo da questo URL?

URL ora - http://www.XXXX.com/video.php?id=XX&title=XXX-XXX-XXX

Che cosa ho bisogno - http://www.XXXX.com/video.php/XX/XXX-XXX-XXX

ho già rimosso .php da tutti i link.

+1

E cosa hai provato? –

+0

usa il metodo post, pensa che stai provando questo con get –

+0

'RewriteRule^video/([0-9] +)/([0-9a-zA-Z _-] +) $ video.php? Id = $ 1 & title = $ 2 [NC, L] 'questo non funziona .. – Nilohn

risposta

5

Seguendo codice .htaccess farà il vostro lavoro

//First Parameer 
    RewriteEngine On 
    RewriteRule ^([a-zA-Z0-9_-]+)$ video.php?id=$1 
    RewriteRule ^([a-zA-Z0-9_-]+)/$ video.php?id=$1 

    //Second Parameter 
    RewriteEngine On 
    RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ video.php?id=$1&title=$2 
    RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ video.php?id=$1&title=$2 
+1

Sì, è molto meglio della mia versione. Bello. –

+0

Non vedo perché questo dovrebbe funzionare. L'OP vuole rimuovere la querystring. –

1

aggiungere sotto il codice al file .htaccess.

RewriteEngine on 
RewriteBase/
RewriteCond %{QUERY_STRING} ^id=(.*)\&title=(.*) 
RewriteRule (.*) /$1/%1/%2? [NC,L,R=301] 

uscita è

http://www.XXXX.com/video.php/XX/XXX-XXX-XXX 

questo codice sta lavorando per me spero che sta lavorando per voi.

+0

la tua regola corrisponderà per qualsiasi url con un parametro id e title, non solo '/ video.php' –

+0

@MarioA Ehi, ho modificato il mio codice ora funziona con qualsiasi file non solo video.php Grazie –

1

Per accedere querystring è necessario utilizzare un'istruzione RewriteCond come questo:

RewriteEngine on 
RewriteCond %{QUERY_STRING} id=([^&]+)&title=([^&]+) 
RewriteRule ^video.php$ video.php/%1/%2 [L,R=301] 

L'esempio precedente funziona quando ID e il titolo parametri sono nell'ordine esatto del vostro esempio. Se possono esserci altri parametri nella Querystring, o se i parametri possono essere in qualsiasi ordine, è necessario modificare le regole.

+0

perché dovrebbe? 'RewriteRule^video.php $' corrisponde solo a '/ video.php' nient'altro. –

+0

Ehi, è un errore, scusa. Grazie per il punto. –

1

Grazie mille per tutte queste risposte. Subodh Ghulaxe hanno pubblicato una buona risposta.

Ma questo è un codice funzionante per me.

# To externally redirect /dir/foo.php?id=123&title=456 to /dir/123/456 
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?id=([^&]+)&title=([^&\s]+) [NC] 
RewriteRule^%1/%2/%3? [R,L] 

# To externally redirect /dir/foo.php?id=123 to /dir/123 
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?id=([^&\s]+)\s [NC] 
RewriteRule^%1/%2? [R,L] 

# To internally forward /dir/foo/12 to /dir/foo.php?id=12 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/([^/]+)(/[^/]+)?/?$ $1.php?id=$2 [L,QSA] 

RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ video.php?id=$1&title=$2 
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ video.php?id=$1&title=$2 

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\s [NC] 
RewriteRule^%1 [R,L] 

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*?)/?$ $1.php [L] 

Sumurai8 finito questo codice in here (codice .htaccess completo). Spero che questo codice possa aiutare qualcuno. Per css, js, le immagini assicurano di usare percorsi assoluti.