J’utilise htaccess
suivant
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301] RewriteRule ^user/([^/]*)/$ /user/index.php?usr=$1
Les trois premières lignes redirigent l’URL non www vers www pour mon site Web.
L’autre ligne redirige à des fins canoniques, par exemple www.mysite.com/user/index.php?usr=JAHAJEE
deviendra www.mysite.com/user/JAHAJEE/
.
Mon problème est que, après avoir ajouté la redirection ci-dessus pour non www à www, les pages redirigées canoniques affichent le paramètre url (par exemple, www.mysite.com/user/JAHAJEE/?usr=JAHAJEE). Veuillez vérifier http://www.jahajee.com/user/JAHAJEE/ & http://jahajee.com/user/JAHAJEE/
Comment puis-je empêcher l’affichage des parameters d’URL dans l’URL redirigée? Merci d’avance.
Le [R=301]
laissera mod_rewrite savoir que la requête doit être redirigée, mais la requête ne sera pas redirigée instantanément. Il évaluera les règles jusqu’à ce qu’il trouve l’indicateur [L]
ou [END]
(ou qu’il atteigne la fin du fichier). Il correspond maintenant à la première règle et indique que lorsque mod_rewrite se sent prêt, il doit redirect. mod_rewrite n’a toujours pas trouvé d’indicateur L
ou END
et a toujours des règles à respecter. Il correspondra alors à la deuxième règle et l’inclura dans la redirection.
Vous devez changer les indicateurs pour la première règle à [R=301,L]
pour le faire redirect. La requête redirigée invoquera à nouveau ce .htaccess
et la seconde règle sera mise en correspondance si nécessaire. Il fonctionnera alors correctement en tant que réécriture interne à nouveau.
peut être que vous pouvez utiliser la redirection 301 ou 303
301 pour définitivement
303 pour temporaire