La règle de réécriture à ajouter .l'extension html
J'ai besoin d'une règle qui va ajouter un .l'extension html à chaque fois qu'il n'est "pas un" slash.
Un nouveau client a récemment changé de commerce électronique de scripts et de la nouvelle version gère le RÉFÉRENCEMENT différemment et a changé le cours de leur 16,000+ les liens vers les produits. Cela n'a pas été pris avant que le site soit indexé, donc nous avons besoin de rediriger l'ancien et le nouveau..
Tous les produits utilisés pour avoir des liens comme ceci
domain.com/category/productname
mais sont maintenant
domain.com/category/productname.html
Les liens de catégorie n'a pas changé et tous sont comme ça
domain.com/category/(slash)
OriginalL'auteur Scott | 2011-04-21
Vous devez vous connecter pour publier un commentaire.
La réponse de @david-wolever redirige tout ce qui n'a pas de fin .html (ou la racine) vers la même URL avec un ajout .l'extension html, le sens qu'il ajoute une .l'extension html pour des choses comme le CSS et le Javascript les fichiers, par exemple, il va rediriger /style.css /style.css.html ce qui n'est probablement pas ce que vous voulez. Il dispose également d'espaces qui suivent ! personnage qui va probablement causé @greggles 500s
Ce redirections d'Url qui ne se terminent pas par un point, suivi de 3 ou 4 caractères alphanumériques:
Ou pour un grain de contrôle, liste blanche les extensions que vous ne souhaitez pas .html annexé par exemple
Malheureusement, cela ne fonctionne pas sur les urls avec des fragments de hachage, ce qui est des limites de l'applicabilité de cette
OriginalL'auteur Paul Groves
Cette option est similaire à @remco, mais ne nécessite pas l'utilisation de [R] ("externe" rediriger envoyé vers le navigateur). J'ai également ajouté un manque \ dans la première condition:
OriginalL'auteur Thomas Leonard
Vous pourriez vouloir jeter un [R], ou quelque chose de trop. Voir les docs: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule (de la recherche pour "rediriger|R").
OriginalL'auteur David Wolever
La réponse de @paul.grov.es semblait aller bien pour moi, mais ensuite j'ai remarqué que mon javascript ne fonctionnait plus.
La solution est évidente, et mentionnés par lui: un".html' a été ajouté à l'url, étant donné que le code javascript de l'extension de seulement 2 caractères.
Donc, ma solution est avéré être:
RewriteCond %{REQUEST_URI} !/$
àRewriteCond %{REQUEST_FILENAME} !-d
.OriginalL'auteur bmareal
C'est vieux thread mais il vaut encore la peine de poster un/testé réponse à ce problème:
Sauté
RewriteCond %{REQUEST_FILENAME} !-f
état depuis regex modèle ne correspond pas à toutes les URI avec la dot.oui, ça devrait fonctionner je pense.
merci! Vous a aidé dans le passé, j'ai besoin d'inverser les paramètres. Je vous remercie. stackoverflow.com/questions/39092679/...
OriginalL'auteur anubhava
Les solutions ci-dessus ne fonctionne pas pour moi,
J'ai trouvé une solution qui fonctionne à:
http://www.garron.me/bits/add-html-extension-nginx-apache-htaccess.html
Au
.htaccess
section.OriginalL'auteur remco
Ma solution pour nginx:
forcer .l'extension html
OriginalL'auteur vgrinko