2016-05-18 17 views
5

Sto tentando di impostare una semplice regola htaccess, ma non funziona.
Penso che il problema sia con i caratteri ? e =?Errore regola di riscrittura htaccess semplice 404

Il codice è:

Options +FollowSymLinks 
ErrorDocument 404 /php/404redirect.php 
RewriteEngine on 
RewriteRule ^productos.php?id=([0-9]+)$ /?view=productos&id=$1 [L,NE,B,QSA] 

Questo mi danno sempre errore 404.

Quello che voglio è reindirizzare tutte le richieste da:
www.example.com/productos.php?id=X
a
www.example.com/?view=productos&id=X

+0

Si sta utilizzando una regola di riscrittura, ma si parla che si desidera reindirizzare, che cosa realmente vuole fare? Reindirizzare o interpretare un URL in un modo diverso a come viene visualizzato? – PavKR

+0

Sì, penso che un reindirizzamento sia migliore. Quello che voglio finalmente mostrare all'utente è una riscrittura del tipo:/productos/id – Tifon

risposta

2

RewriteRule ^productos.php /?view=productos [L,NE,B,QSA]

o se si desidera reindirizzare

RewriteRule ^productos.php /?view=productos [L,NE,B,QSA,R=301]

3

Querystring è non fa parte della corrispondenza nella direttiva RewriteRule, per reindirizzare le stringhe di query, tu necessario utilizzare RewriteCond una delle seguenti opzioni:

opzione 1

RewriteEngine on 

RewriteCond %{THE_REQUEST} /product\.php\?id=([^&\s] [NC] 
RewriteRule^/?view-product&id=%1? [NC,L,R] 

opzione 2

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^id=([^&]+)$ [NC] 
RewriteRule ^product\.php$ /?view-product&id=%1? [NC,L,R] 

Usiamo un punto di domanda vuoto ? alla fine dell'URL di destinazione per eliminare le stringhe di query precedenti, altrimenti queste stringhe di query vengono aggiunte all'URL di destinazione per impostazione predefinita.

Modificare il R a R = 301 se si vuole fare il reindirizzamento permanente.

Problemi correlati