GNU/Linux >> Tutoriels Linux >  >> Linux

Impossible de comprendre une règle htaccess

Tout ce que fait cette règle est d'ajouter un / à la fin à vos URL s'il n'y en a pas et s'il n'y a pas de . dans l'URI, donc https://example.org/test sera redirigé vers https://example.org/test/ , mais https://example.org/test.html ne sera pas réécrit en https://example.org/test.html/ (mais notez :https://example.org/test.case/folder ne sera également pas être redirigé vers https://example.org/test.case/folder/ car il contient un . dans l'URI).

## Do the following if the URI does not end with `/` or  does not contain an `.`: 
## the . is relevant for file names like test.html, which should n 
RewriteCond %{REQUEST_URI} !(/$|\.)

## Redirect it to the original URI with an added `/` and mark this as permanent:
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

Sans valider, mais en utilisant mon expérience dans la réécriture d'Apache, cette configuration semble :

  1. Correspond à la partie "chemin" de l'URI (et non aux paramètres du serveur, du port ou de la requête), par exemple "/my/location/file.html".
  2. Correspond si cette partie ne se termine pas par un caractère '/' (barre oblique), -ou- n'inclut pas de '.' (point).
  3. Utilisez le chemin d'accès complet de l'URI et ajoutez-y une barre oblique.
  4. Envoyez une redirection HTTP 301 (permanente) pour diriger le navigateur vers ce nouvel URI.

Cela se traduira par les cas de test suivants

/ -> / /test -> /test/ /my/resource -> /my/resource/ /my/resource.type -> /my/resource.type /edge.case/resource -> /edge.case/resource

Je pense donc que la règle a pour but d'ajouter des barres obliques aux ressources qui ne semblent pas être un fichier, mais il semble avoir un cas limite.

Si vous n'ajoutez pas une barre oblique à une ressource avec '.' (point) dans la partie non-fichier du chemin par lequel l'expression régulière doit être remplacée :

# match paths which do not end with a slash, or do not resemble a file with an extension
RewriteCond %{REQUEST_URI} !(/$|\.[^/]+$)
# redirect permanently to the same uri with a slash
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

Linux
  1. Déterminez le numéro de port d'écoute Rsyslog ?

  2. Impossible d'installer Wine sur Ubuntu Studio 19.10 ?

  3. Comment rediriger http vers https en utilisant .htaccess ?

  4. Comment puis-je connaître le type MIME d'un fichier (Content-Type) ?

  5. Comment puis-je vérifier le nombre d'accès pour chaque règle dans iptables ?

Comment savoir si un système Linux utilise Wayland ou X11 ?

Puis-je créer une machine virtuelle à partir d'une machine physique Windows XP ?

Comment puis-je comprendre pourquoi le service systemctl systemd-modules-load échoue?

Initramfs peut-il être paginé sur le disque d'échange ?

Comment puis-je savoir quel système d'exploitation de serveur un site particulier exécute ?

Impossible de monter le volume nfs - délai d'expiration