Générique htaccess redirection www à la non-www
Je voudrais rediriger www.example.com
à example.com
. La suite htaccess code fait de ce lieu:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Mais, est-il un moyen de le faire dans un générique de la mode sans coder en dur le nom de domaine?
- Il est important d'être conscient que si vous n'utilisez pas de www (ou d'un autre sous-domaine), puis tous les cookies seront soumis pour chaque sous-domaine amd, vous ne serez pas en mesure d'avoir un biscuit ou moins sous-domaine pour servir du contenu statique donc de réduire la quantité de données échangées entre le navigateur et le serveur. Quelque chose que vous pourriez venir plus tard pour le regretter: twitter.com/codinghorror/statuses/1637428313
- Une autre chose à considérer, assurez-vous que vous êtes en paramètre le nom canonique sans les " www " dans vos pages, afin d'éviter une possible peine de duplicate content. Aussi, si vous avez des url absolues dans vos liens, assurez-vous qu'ils sont tous non-www ainsi.
- Dans mon esprit, de son mieux pour garder l'explicite redirection, en particulier lors de la copie de la configuration pour un autre domaine, qui peut nécessiter de réglage différent (domaine www est mieux dans certains cas) weboptimizer.ch/2014/01/une redirection www
- Une raison pour laquelle cette solution pourrait fonctionner pour tous les cas à l'exception de la racine de l'url? Par exemple domain.com n'a pas piont de domain.com, alors domain.com/page1 ne se rediriger vers domain.com/page1.
- Si vous souhaitez rediriger www à la non-www tout en maintenant le protocole (HTTP ou HTTPS), puis de voir cette question: la Redirection www à la non-www tout en maintenant le protocole HTTP ou HTTPS
Vous devez vous connecter pour publier un commentaire.
Même que Michael sauf celui-ci fonctionne 😛
RewriteEngine On
précurseur pour le faire fonctionner.http://www.domain.com/
àhttp://domain.com//
. Vous devez ajouter/
à laRewruteRule
. Cela fonctionne pour moiRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
avec le double slash. Donc je n'aiRewriteRule ^(.*)$ http://%1$1 [R=301,L]
et il semble fonctionner jusqu'à présentHTTP_HOST
correspondance de modèle de^www\.(.+)$
de sorte que vous avez besoin d'un nom de domaine?.htaccess
(un directory contexte). Si vous êtes dans un contexte de serveur, alors vous ne devriez probablement pas utiliser mod_rewrite pour cette tâche, au lieu d'utiliser mod_aliasRedirect
directives dans le vhost approprié, comme @Birla liens ci-dessus.Mais si nous avons besoin de le faire pour séparer le http et le https:
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
vous ne devrait pas être un supplément de slash. (Juste pour remarque, si vous effectuez cette redirection dans la configuration du serveur, alors vous ne devriez probablement pas utiliser mod_rewrite pour commencer... une simple mod_aliasRedirect
dans le vhost approprié conteneur serait plus efficace et moins sujettes à l'erreur.)Rediriger non-www à www (à la fois: http + https)
RewriteEngine On
etRewriteBase /
, mais sinon bien fonctionné.Si vous voulez le faire dans le httpd.fichier conf, vous pouvez le faire sans mod_rewrite (et apparemment c'est mieux pour les performances).
J'ai obtenu une réponse ici: https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507
Voici les règles de redirection www URL sans www:
Voici les règles pour rediriger un no-www URL www:
Notez que j'ai utilisé
NE
drapeau pour empêcher apache de s'échapper de la chaîne de requête. Sans ce drapeau, apache va changer l'URL demandéehttp://www.example.com/?foo%20bar
àhttp://www.example.com/?foo%2250bar
La
RewriteCond
capture tout dans leHTTP_HOST
variable après lawww.
et l'enregistre dans%1
.La
RewriteRule
de capture de l'URL sans le/
et l'enregistre dans$1
.sans leading "/"
- En.htaccess
(comme indiqué dans la question) il n'y a pas de leader/
, de sorte que le motif ne correspond jamais avec et la redirection ne se produit jamais. (Il y a seulement un slash dans un serveur ou virtualhost contexte.) Aussi, si vous avez des directives de mod_rewrite après cela, alors vous aurez besoin de laL
drapeau.Essayez ceci:
Si l'hôte démarre avec www, de nous coller l'ensemble sur le début de l'URL, puis enlever le "www."
.htaccess
. Dans un directory contexte (.htaccess
), vous devez modifier le premierRewriteRule
à lire:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(nécessite Apache 2.2.12+). Notez l'ajout de la barre oblique et laDPI
(ignorer les informations de Chemin) drapeau - pour empêcher une partie de l'URL-path apparemment dupliqué (qui est en fait "chemin-info") comme il est dit dans les précédents commentaires. Cependant, il y a de plus simple directives - comme dans les autres réponses.Il peut y avoir beaucoup de désinformation là-bas sur les htaccess redirige, je trouve. Tout d'abord, assurez-vous que votre site est en cours d'exécution sur Unix en utilisant Apache et pas sur un hôte Windows, si vous vous attendez à ce que ce code fonctionne.
(Assurez-vous qu'il n'y a pas de ligne d'espace entre chaque ligne de texte, bien; j'ai ajouté un espace supplémentaire entre les lignes, de sorte qu'il rend bien dans cette fenêtre.)
Ceci est un extrait de code qui peut être utilisé pour diriger le www version de votre site à l'adresse http://version. Il y a d'autres codes similaires qui peuvent être utilisés, trop.
Complète Générique WWW gestionnaire, http/https
Je n'ai pas vu de réponse complète. Je l'utilise pour gérer WWW inclusion.
S'il vous plaît laissez-moi savoir comment cela fonctionne, ou si j'ai laissé une lacune.
www
à la non-www
. Vous êtes forcer l'inclusion dewww
.Pour sous-dossier
Pour ceux qui ont besoin de pouvoir accéder à l'ensemble du site SANS le préfixe "www".
Mare assurez-vous que vous l'ajouter au fichier suivant
protossl
variable d'environnement (ce n'est pas un standard/variable de serveur). Ce sera toujours vide, donc toujours rediriger vershttp
. (L'idée de la création d'protossl
plus haut dans le code est pour lorsque vous souhaitez conserver le protocole lors de la redirection. Cependant, ces jours, vous devriez probablement être rediriger vershttps
tout le temps.)www non www avec https
J'ai utilisé la règle ci-dessus à ta www pas de www et il fonctionne très bien pour la page d'accueil mais sur les pages internes, ils sont à la transmission à l' /index.php
J'ai trouvé cette autre règle dans mon .fichier htaccess qui est à l'origine de ce mais ne savez pas quoi faire à ce sujet. Toutes les suggestions sont les grands:
Si vous souhaitez supprimer
www
sur les deuxhttp
ethttps
, utilisez la commande suivante :Ce redirections
Non ssl
à
Et
SSL
à
sur apache
2.4.*
vous pouvez accomplir cela en utilisant unRedirect
avecif
directive,utilisation: Javascript /jQuery
Ou .htaccess:
et La méthode PHP:
Ajax
À l'aide .htaccess pour Rediriger vers www ou non www:
Suffit de mettre les lignes de code suivantes dans votre main, de la racine .fichier htaccess.
Dans les deux cas, il suffit de changer out domain.com pour votre propre nom d'hôte.
Rediriger vers www
Rediriger vers la non-www
changement de POINT => . !!!
La seule façon que je l'ai eu à travailler...
Si vous êtes forçant www. dans l'url ou de les forcer ssl prototcol, puis essayez d'utiliser les variations possibles dans le fichier htaccess, tels que:
RewriteCond %{SERVER_PORT} 80
je suggère l'utilisation de ces plus universel vérifier:RewriteCond %{HTTPS} off
La réponse sélectionnée et de nombreuses autres solutions chuté de la partie de l'url après /, donc, fondamentalement, il est toujours redirigé vers le domaine principal, au moins pour moi.. Alors je suis ajoutant de l'échantillon de travail en respectant chemin d'accès complet après la barre oblique..
Je ne suis pas sûr de savoir pourquoi tu veux supprimer www.
Mais à l'inverse de la version serait:
Et l'avantage de ce script est:
si u ont quelque chose comme test.whattimein.com ou de toute autre (environnements de développement/test)
il l'habitude de rediriger U à l'origine de l'environnement.
C'est mis à jour pour fonctionner sur un serveur Apache 2.4:
Le seul changement vs Michael est de supprimer la
[NC]
, qui produit "AH00665" erreur:RewriteCond %{REQUEST_FILENAME} !-f [NC]
). LeNC
drapeau fait peu de différence dans le ci-dessus, cependant, la raison laNC
drapeau doit être utilisée ici est d'attraper la petite fraction de bot trafic (à tort) envoie une majuscule, le nom d'hôte.Salut vous pouvez utiliser les règles suivantes dans votre fichier htaccess: