web-dev-qa-db-fra.com

Apache Rewrite Rule non-www to www + http to https + supprime le slash final

J'aimerais accomplir les tâches suivantes:

  • réécrire non-www sur www
  • redirection de http vers https
  • enlever la barre oblique

par exemple. http://example.co.uk doit rediriger vers https://www.example.co.uk

Comment structureriez-vous un ensemble de règles pour faire tout ce qui précède?

4
DD.

Pour les deux premières réécritures (non-www → www, http → https), la règle suivante devrait fonctionner:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} !=www.example.com [NC]
RewriteRule ^(.*) https://www.example.com/$1 [NS,L,R=permanent]

Il suffit de remplacer www.example.com par le nom d’hôte canonique de votre site.

En ce qui concerne votre troisième point, il n'est pas nécessaire d'ajouter ou de supprimer les barres obliques de fin des URL avec un chemin vide , car ces URL sont considérées comme canoniquement équivalentes par tous les clients HTTP conformes aux normes (y compris les navigateurs et les moteurs de recherche). ).

Ps. Si vous souhaitez que votre site soit toujours accessible via HTTPS, vous voudrez probablement également configurer votre serveur Web pour envoyer le en-tête HTTP Strict Transport Security . Par exemple, dans Apache, vous pouvez le faire avec la directive suivante (principalement copiée à partir de l'article lié de Wikipedia):

<If "-T %{HTTPS} && %{HTTP_Host} = 'www.example.com'">
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</If>
9
Ilmari Karonen

URL NON WWW VERS WWW AVEC HTTPS À L'AIDE DE HTACCESS:

Vous pouvez ajouter le code suivant à votre fichier .htaccess, vous pouvez le trouver dans le répertoire racine de votre site Web. Si vous ne le trouvez pas, vous pouvez le copier dans un éditeur de texte et le sauvegarder au format .htaccess, puis le télécharger.

p.s .: Assurez-vous de sauvegarder le fichier .HTACCESS avant de continuer. Des codes incorrects peuvent conduire à 500 erreurs.


RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_Host}/$1 [R=301,L]

Supprimer la barre oblique

Soyez prudent lorsque vous désactivez le slash final. Si mod_dir est activé sur votre hôte, veillez à désactiver la barre oblique du répertoire, activée par défaut. Cette directive ajoutera une barre oblique à la fin d'un répertoire, quelles que soient les règles que vous avez définies. Pour le désactiver, ajoutez ceci en haut de votre fichier htaccess:

DirectorySlash Off

Votre navigateur et même votre serveur, par défaut, ajoutent une barre oblique finale à un répertoire. C'est fait pour une raison. Si vous devez supprimer la barre oblique finale, procédez comme suit:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
0
Ipsita