Question

Je veux: tous les liens qui ne contiennent pas le nom de fichier (pas les fichiers .html, .jpg, .png, .css) sont redirigés avec l’état 301 vers un répertoire, par exemple: http://mysite.com/article - > http://mysite.com/article/ Mais http://mysite.com/article/article-15.html ne redirige pas . Quelle expression régulée dois-je écrire à .htaccess pour l’ajout d’une barre oblique aux répertoires virtuels?

Était-ce utile?

La solution

Je pense que les solutions suivantes pourraient fonctionner:

RewriteEngine on   
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

En ce qui concerne mod_rewrite, je ne peux jamais en être sûr sans avoir testé ...

Autres conseils

Précisions nécessaires:

Étant donné l'URL: http: // serveur / chemin / fichier

Est-ce que cela est redirigé vers: http: // serveur / chemin /

Ou est-ce qu'il est redirigé vers: http: // serveur / chemin / fichier /

Comme dans: voulez-vous que les redirections aillent vers le chemin parent ou voulez-vous simplement ajouter une barre oblique et supposer que le répertoire sort du chemin actuel?

La règle RewriteRule ci-dessus de MB échouera sur des chemins tels que / a car il doit correspondre à au moins deux caractères après la barre oblique. De plus, il ne correspond qu'aux URL du répertoire supérieur.

RewriteRule ^(([^\/]+\/)*[^\/\.]+)$ http://%{HTTP_HOST}/$1/ [R=301,L]

Cela a-t-il pour but de réduire la pollution de l'historique / les faux négatifs?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top