2011-09-06 6 views
0

J'ai une application web en PHP avec urls comme ceci: https://www.domain.com/?mod=test&act=viewmod_rewrite .htaccess 301 problème redirection

Mon problème est que lorsque je tente d'utiliser mod_rewrite pour rediriger les utilisateurs vers nouveau lien: https://www.domain.com/view-test

J'ai la règle suivante sous mon .htaccess:

RewriteRule ^\?mod=test&act=view$ /view-test [L,R=301] 

Si je supprime le «? de la règle ci-dessus la redirection fonctionne mais heureusement je reçois une erreur 404. Mais si je le garde rien ne se passe

Quelqu'un peut-il aider?

Répondre

1

Vous pouvez créer une nouvelle règle pour view-test:

RewriteEngine On 

RewriteRule ^mod=test&act=view$ /view-test [L,R=301] 

# new rule for view-test 
RewriteRule ^view-test$ /index.php [L] 

Mise à jour:

Cela fonctionne parfaitement pour moi:

Options +FollowSymlinks 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^/index\.php$ 
RewriteCond %{QUERY_STRING} ^mod=test&act=view$ 
RewriteRule ^(.*)$ /test-view? [L,R=301] 

RewriteRule ^test-view/?$ /index.php [L] 

obtenir les valeurs:

<?php 

$request = str_replace("/", "", $_SERVER['REQUEST_URI']); 
$request = explode("-", $request); 

print_r($request); 

Sortie:

Array 
(
    [0] => test 
    [1] => view 
) 

Hope this helps !!

+0

Je pense que je n'ai pas expliqué correctement ... Mon problème est que mon URL est www.domain.com/?mod=test&act=view et je ne peux tout simplement pas correspondre au "?" char dans l'instruction de redirection ... Merci pour la réponse! – jribeiro

+0

ok, je vais mettre à jour la réponse – tttony

+0

Ce genre de travaux. Mais la dernière règle m'envoie à index.php et je voulais être redirigé vers index.php? Mod = test & act = view. Si je remplace index.php par la page réelle, je finis dans une boucle et j'obtiens une erreur. Désolé pour le problème – jribeiro