web-dev-qa-db-fra.com

Forcer le slash final à la fin des "faux" dossiers

Les codes de travail que j'ai trouvés ici la plupart mettent une barre oblique dans tout.

J'ai juste besoin de forcer la fin du slash dans ces "faux répertoires" (qui font partie de mon schéma de réécriture (uniquement les répertoires)) et de conserver tout le reste (faux fichiers se terminant par .html) tels quels.

Voici mon .htaccess:

RewriteEngine on

RewriteCond %{HTTP_Host} !^www.example.com [nc]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

DirectoryIndex index.php?category=1

Options -Indexes

RewriteRule ^album/([0-9]+)$ /index.php?p=$1&opc=4
RewriteRule ^album/$ /index.php?p=1&opc=4

RewriteRule ^album/(.*)-(.*).html /view.php?id=$2&lang=$1

RewriteRule ^search/(.*)/$ /index.php?lang=en&search=$1  [L,QSA]
RewriteRule ^channels/(.*)/$ /index.php?lang=en&channel=$1  [L,QSA]
RewriteRule ^(.*)/favorites/$ /index.php?lang=en&favorites=$1  [L,QSA]
RewriteRule ^(.*)/likes/$ /index.php?lang=en&likes=$1  [L,QSA]
RewriteRule ^(.*)/albums/(.*)/$ /index.php?lang=en&albumid=$2|$1  [L,QSA]
RewriteRule ^(.*)/albums/$ /index.php?lang=en&album=$1  [L,QSA]
RewriteRule ^albums/$ /index.php?lang=en&album=all  [L,QSA]

RewriteRule ^newest/$ /index.php?opc=1&lang=en  [L,QSA]
RewriteRule ^popular/$ /index.php?opc=2&lang=en  [L,QSA]
RewriteRule ^best/$ /index.php?opc=3&lang=en  [L,QSA]

RewriteRule ^categories/$ /index.php?category=1  [L,QSA]
RewriteRule ^categories/([0-9]+)$ /index.php?p=$1&category=1  [L,QSA]
RewriteRule ^categories/(.*)/$ /index.php?lang=en&categories=$1  [L,QSA]
RewriteRule ^categories/(.*)/([0-9]+)$ /index.php?lang=en&categories=$1&p=$2  [L,QSA]
1
Jeferson Cardozo

Vous devrez rediriger pour ajouter la barre oblique. Cela redirigera tout jeu de lettres sans autre ponctuation, telle que des barres obliques ou des points. Je ne pense pas que cela soit en conflit avec vos autres règles de réécriture.

RewriteRule ^((.*/)?[a-z]+)$ http://www.example.com/$1/ [R=301,L]

Vous pouvez le rendre un peu plus sûr en vous assurant qu'il ne correspond pas aux fichiers existants sur le disque. Pour ce faire, ajoutez ces deux conditions:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Alternativement, vous pouvez définir des règles distinctes pour chacun de vos "faux" répertoires:

RewriteRule ^(album|categories|newest|best)$  /$1/ [R=301,L]
RewriteRule ^((search|categories)/[^/]+)$  /$1/ [R=301,L]
RewriteRule ^(.*/(favorites|likes|albums))$  /$1/ [R=301,L]
RewriteRule ^(.*/albums/[^/]+)$  /$1/ [R=301,L]
2

Les "faux dossiers" ou "permaliens" sont souvent utilisés par Wordpress. Vous les configurez à partir de votre WP _ back-end dans Paramètres-> Permaliens, où vous avez plusieurs choix pour leur affichage dans la barre d'URL. Toutes les "jolies" options comportent une barre oblique, par exemple. http://your_site.com/sample-post/ - normalement, cela ne change rien à la vitesse de chargement d'une page. Cependant, si vous souhaitez indexer dans une page nommée 'cible-post' après avoir placé un <a id="index">Link</a> dans cette page, si le lien à partir de http://another_site.com est de la forme <a href="http://your_site.com/target-post#index">, Wordpress ajoutera la barre oblique finale - le résultat est que l'index ne fonctionnera pas.

La solution consiste à sélectionner une structure personnalisée dans le back-end WP et dans http://your_site.com/%postname% - c'est-à-dire. NO barre de fin. Les liens indexés fonctionneront alors.

En ce qui concerne les performances de chargement des pages, en regardant les journaux, j’ai reçu un 301 (redirection) si je mets manuellement dans l’URL AVEC la barre oblique et un 200 (succès) SANS la barre oblique après le changement. Auparavant (c.-à-d. En laissant Wordpress mis en barre oblique), j’avais un 301 SANS un 200 AVEC.

Ainsi, dans Wordpress, peu importe que le "permalien" inclue la barre oblique ou non - SAUF SI vous souhaitez utiliser des liens indexés dans d'autres pages.

1
Steve GS