pense-bête de bruno sanchiz

Accueil > CMS > configuration d’un site : htaccess

configuration d’un site : htaccess

Publié le 27 juin 2016, dernière mise-à-jour le 24 août 2024, 22 visites, visites totales.

forcer le https,exemple de lautre.net

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

quand ça marche, rajouter

Header set Strict-Transport-Security "max-age=60000; includeSubdomains; "

redirection d’un site

d’après https://www.leptidigital.fr/webmarketing/seo/comment-faire-redirection-301-htaccess-exemples-13824/

#301 Redirects for .htaccess

#Redirect a single page:
Redirect 301 /pagename.php http://www.domain.com/pagename.html

#Redirect an entire site:
Redirect 301 / http://www.domain.com/

#Redirect an entire site to a sub folder
Redirect 301 / http://www.domain.com/subfolder/

#Redirect a sub folder to another site
Redirect 301 /subfolder http://www.domain.com/

#This will redirect any file with the .html extension to use the same filename but use the .php extension instead.
RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php

##
#You can also perform 301 redirects using rewriting via .htaccess.
##

#Redirect from old domain to new domain
RewriteEngine on
RewriteBase /
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

#Redirect to www location
RewriteEngine on
RewriteBase /
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

#Redirect to www location with subdirectory
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]

#Redirect from old domain to new domain with full path and query string:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]

#Redirect from old domain with subdirectory to new domain w/o subdirectory including full path and query string:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$
RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]

Rewrite and redirect URLs with query parameters (files placed in root directory)

Original URL:

http://www.example.com/index.php?id=1
Desired destination URL:

http://www.example.com/path-to-new-location/
.htaccess syntax:

RewriteEngine on
RewriteCond %{QUERY_STRING} id=1
RewriteRule ^index\.php$ /path-to-new-location/? [L,R=301]
Redirect URLs with query parameters (files placed in subdirectory)

Original URL:

http://www.example.com/sub-dir/index.php?id=1
Desired destination URL:

http://www.example.com/path-to-new-location/
.htaccess syntax:

RewriteEngine on
RewriteCond %{QUERY_STRING} id=1
RewriteRule ^sub-dir/index\.php$ /path-to-new-location/? [L,R=301]
Redirect one clean URL to a new clean URL

Original URL:

http://www.example.com/old-page/
Desired destination URL:
http://www.example.com/new-page/
.htaccess syntax:

RewriteEngine On
RewriteRule ^old-page/?$ $1/new-page$2 [R=301,L]
Rewrite and redirect URLs with query parameter to directory based structure, retaining query string in URL root level

Original URL:

http://www.example.com/index.php?id=100
Desired destination URL:

http://www.example.com/100/
.htaccess syntax:

RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]
Rewrite URLs with query parameter to directory based structure, retaining query string parameter in URL subdirectory

Original URL:
http://www.example.com/index.php?category=fish
Desired destination URL:
http://www.example.com/category/fish/
.htaccess syntax:

RewriteEngine On
RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]
Domain change – redirect all incoming request from old to new domain (retain path)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC]
RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]
If you do not want to pass the path in the request to the new domain, change the last row to:

RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L]

#From blog.oldsite.com -> www.somewhere.com/blog/
retains path and query, and eliminates xtra blog path if domain is blog.oldsite.com/blog/
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI}/ blog
RewriteRule ^(.*) http://www.somewhere.com/%{REQUEST_URI} [R=302,NC]
RewriteRule ^(.*) http://www.somewhere.com/blog/%{REQUEST_URI} [R=302,NC]

Mots de passe pour un dossier :

On crée un fichier .htaccess dans le dossier à bloquer , l’utilisateur verra s’afficher Titre du pop-up ; les mots de passe seront dans le fichier "/var/www/machin/htpasswd"
Remarque:chez free.fr , on peut écrire le fichier en relatif , par exemple ../dossier/htpasswd .

On met les mots de passe dans le fichier /var/www/machin/htpasswd :

Pour empêcher l’accès direct aux mots de passe, on rajoute un fichier .htaccess dans /var/www/machin/ qui contient

Si on utilise un mot de passe crypté, on aura dans le fichier /var/www/machin/htpasswd :

pour avoir le mot de passe on peut utiliser le fichier suivant :
DIVERS/PHPs/MotsDePasse_htaccess.php

On utilise la fonction password_hash pour créer le mot de passe crypté, par exemple

$pass=password_hash('kangourou', PASSWORD_DEFAULT);.

Remarques : <?php echo crypt('motdepasse'); ?> marche aussi mais est à éviter ;

si vous voulez protéger le répertoire /usr/local/apache/htdocs/secret, vous pouvez utiliser les directives suivantes, soit dans le fichier /usr/local/apache/htdocs/secret/.htaccess, soit dans le fichier httpd.conf à l’intérieur d’une section  :

AuthType Basic
AuthName "Restricted Files"
# AuthBasicProvider file : défaut de AuthBasicProvider
AuthUserFile "/usr/local/apache/passwd/passwords"
Require user machin

Il faut configurer apache2 pour avoir les bons mod ( https://httpd.apache.org/docs/2.4/howto/auth.html )

  • mod_auth_basic correspond à AuthType Basic ( mot de passe en clair, utiliser mod_ssl )
  • AuthName "Restricted Files" , npermet de ne demander qu’une fois le mot de passe pour tous les htaccess "Restricted Files"

et avoir AllowOverride AuthConfig dans /etc/apache2/apache2.conf, par exemple,

<Directory /var/www/>
	Options Indexes FollowSymLinks
	AllowOverride AuthConfig
	Require all granted
</Directory>

On peut aussi créer un groupe :
Nom-de-groupe : machin dpitts sungo rshersey dans "/usr/local/apache/passwd/groups"
.htaccess :

AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
AuthGroupFile "/usr/local/apache/passwd/groups"
Require group GroupName

on a aussi :
Require valid-user

exemples de codes htaccess

  • mot de passe + https forcé
  • interdit d’accéder
  • https forcé : remplacer http://dindoun.lautre.net/machin.php par https://dindoun.lautre.net/machin.php
    RewriteEngine On
    RewriteCond %{Server_Port} 80
    RewriteRule ^(.*)$ https://dindoun.lautre.net/$1 [R,L]
    

80 peut être remplacé par !=443
[R,L] peut être remplacé par [R=301,L]

aides

[htaccess sur apache.org->https://httpd.apache.org/docs/current/howto)/htaccess.html


message d’erreur à l’installation :
htaccess inopérant

Avertissement : la configuration de votre serveur HTTP ne tient pas compte des fichiers .htaccess. Pour pouvoir assurer une bonne sécurité, il faut que vous modifiiez cette configuration sur ce point, ou bien que les constantes _DIR_TMP & _DIR_CONNECT (définissables dans le fichier mes_options.php) aient comme valeur des répertoires en dehors de /var/www/html.


[bruno sanchiz]