2010-11-29 6 views
0

Essayer de fissurer ce qui suit;Règle de réécriture .htaccess pour mapper une chaîne de requête spécifique à un contrôleur

/any/segment/?zone=116&n-value=a128c471 

.. à exprimer dans un contrôleur /controller/ads.php, mais assurez-vous ads.php REQUEST_URI et QUERY_STRING reste le même (sans redirection).

Donnée du suivant bien sûr;

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !((.*)\.(.*))$ 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ /$1/?%{QUERY_STRING} [NC,L,R=301] 

J'apprécierais n'importe quel conseil.

+0

vous voulez "pas" réoriente, alors pourquoi avez-vous mis R = 301 – shikhar

Répondre

0
  1. L'URL n'atteindra pas votre troisième condition. mod_rewrite ignore la chaîne de requête; il verra une barre oblique à la fin de l'URL.

  2. Il n'est pas nécessaire d'ajouter manuellement la chaîne de requête (verbatim) à la fin.

  3. Vous devez modifier la chaîne de remplacement utilisée par votre règle de réécriture et supprimer le drapeau R=301. En fonction des URL utilisées sur votre site, vous pouvez avoir besoin d'une expression rationnelle plus spécifique sur le côté gauche (ou une autre condition) pour exclure les URL que vous ne souhaitez pas réécrire.

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !((.*)\.(.*))$ 
    RewriteRule ^(.*)$ /controller/ads.php [NC,L] 
    
Questions connexes