Après avoir lu de nombreux articles sur la réécriture d'URL, je reste bloqué avec des erreurs de statut 404
.
Mon objectif:
Un 'statique' réécrit les URL, comme suit (l'utilisateur clique ou entre l'un des URL/script, mais en interne, l'autre est en cours d'exécution - les paramètres sont également 'statiques', donc je pense que je ne peux pas utilisez n'importe quel type de motif (*.)
et $1
dans la règle ...:
domain.tld/en/abc.php?foo
à domain.tld/en/xyz.php?bar
(1er niveau)domain.tld/en/abc.php?foo&blabla
à domain.tld/en/xyz.php?bar&otherstring
(2e niveau)Informations supplémentaires:
Mon .htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^en/abc\.php\?foo&blabla$ /en/xyz.php?bar&otherstring [NC,L]
RewriteRule ^en/abc\.php\?foo$ /en/xyz.php?bar [NC,L]
J'ai déjà une erreur 404
sur cette dernière règle plus simple. Je n'ai pas accès au rewritelog.
Vous ne pouvez pas rechercher la chaîne de requête à l'aide du modèle RewriteRule
(la chaîne de requête est supprimée avant la correspondance du modèle, de même que le nom d'hôte, etc.). Ainsi, les règles que vous avez énoncées ci-dessus ne correspondront tout simplement pas et vous obtiendrez un code 404. Cependant, vous pouvez utiliser la directive RewriteCond
pour vérifier la chaîne de requête:
Par exemple:
domain.tld/en/abc.php?foo
à domain.tld/en/xyz.php?bar
RewriteCond %{QUERY_STRING} =foo
RewriteRule ^en/abc\.php$ /en/xyz.php?bar [L]
Notez que cela correspond à la chaîne de requête exacte "foo". J'ai supprimé le drapeau NC
, sauf si vous avez spécifiquement besoin d'une correspondance insensible à la casse?