Je voudrais rediriger www.example.com
vers example.com
. Le code htaccess suivant rend cela possible:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Mais, existe-t-il un moyen de le faire de manière générique sans coder en dur le nom de domaine?
apache
mod-rewrite
url-rewriting
puits profond
la source
la source
Réponses:
Identique à Michael sauf que celui-ci fonctionne: P
la source
RewriteEngine On
précurseur pour le faire fonctionner.http://www.domain.com/
vershttp://domain.com//
. Vous devez ajouter/
à laRewruteRule
. Cela fonctionne pour moiRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
avec les doubles barres obliques. Donc je l'ai faitRewriteRule ^(.*)$ http://%1$1 [R=301,L]
et cela semble fonctionner jusqu'à présentMais si nous devons le faire pour http et https séparés:
la source
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
vous ne devriez pas recevoir de barre oblique supplémentaire. (Juste pour noter, si vous effectuez cette redirection dans la configuration du serveur, vous ne devriez probablement pas utiliser mod_rewrite pour commencer ... un simple mod_aliasRedirect
dans le conteneur vhost approprié serait plus efficace et moins sujet aux erreurs.)Rediriger non www vers www (les deux: http + https)
la source
RewriteEngine On
etRewriteBase /
, mais sinon, cela a bien fonctionné.Si vous voulez le faire dans le fichier httpd.conf, vous pouvez le faire sans mod_rewrite (et apparemment c'est meilleur pour les performances).
J'ai obtenu cette réponse ici: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
la source
Voici les règles pour rediriger une URL www vers no-www:
Voici les règles pour rediriger une URL sans www vers www:
Notez que j'ai utilisé l'
NE
indicateur pour empêcher apache d'échapper à la chaîne de requête. Sans ce drapeau, apache changera l'URL demandéehttp://www.example.com/?foo%20bar
enhttp://www.example.com/?foo%2250bar
la source
Le
RewriteCond
capture tout dans laHTTP_HOST
variable après lewww.
et l'enregistre%1
.Le
RewriteRule
capture l'URL sans le début/
et l'enregistre$1
.la source
sans leading "/"
- Dans.htaccess
(comme indiqué dans la question), il n'y a pas de début/
, donc le modèle ne correspond jamais et la redirection ne se produit jamais. (Il n'y a qu'une barre oblique dans un contexte serveur ou virtualhost .) De plus, si vous avez des directives mod_rewrite après cela, vous aurez besoin de l'L
indicateur.Essaye ça:
Si l'hôte commence par www, nous collons tout l'hôte sur le début de l'URL, puis retirons le "www".
la source
.htaccess
. Dans un contexte de répertoire (.htaccess
), vous devez changer le premierRewriteRule
pour lire:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(nécessite Apache 2.2.12+). Notez l'ajout de la barre oblique et duDPI
drapeau (Discard Path Info) - pour éviter qu'une partie du chemin URL ne soit apparemment dupliquée (qui est en fait "chemin-info") comme indiqué dans les commentaires précédents. Cependant, il existe des directives plus simples - comme indiqué dans les autres réponses.Gestionnaire WWW générique complet, http / https
Je n'ai pas vu de réponse complète. Je l'utilise pour gérer l'inclusion WWW.
Veuillez me faire savoir comment cela fonctionne ou si j'ai laissé une échappatoire.
la source
www
vers nonwww
. Vous forcez l'inclusion dewww
.Il peut y avoir beaucoup de désinformation sur les redirections htaccess, je trouve. Tout d'abord, assurez-vous que votre site fonctionne sous Unix à l'aide d'Apache et non sur un hôte Windows si vous vous attendez à ce que ce code fonctionne.
(Assurez-vous cependant qu'il n'y a pas d'espaces entre chaque ligne de texte; j'ai ajouté un espace supplémentaire entre les lignes pour que cela apparaisse bien dans cette fenêtre.)
Il s'agit d'un extrait de code qui peut être utilisé pour diriger la version www de votre site vers la version http: //. Il existe d'autres codes similaires qui peuvent également être utilisés.
la source
Pour le sous-dossier
la source
Pour ceux qui ont besoin d'accéder à l'ensemble du site SANS le préfixe «www».
Jument sûr que vous l'ajoutez au fichier suivant
la source
protossl
variable d'environnement (ce n'est pas une variable standard / serveur). Ce sera toujours vide, donc sera toujours redirigé vershttp
. (L'idée derrière la définitionprotossl
plus tôt dans le code est de savoir quand vous souhaitez conserver le protocole lors de la redirection. Cependant, ces jours-ci, vous devriez probablement redirigerhttps
tout le temps.)Utilisation de .htaccess pour rediriger vers www ou non www:
Mettez simplement les lignes de code suivantes dans votre fichier racine principal .htaccess. Dans les deux cas, remplacez simplement domain.com par votre propre nom d'hôte.
Rediriger vers www
Rediriger vers non-www
changer DOT en =>. !!!
la source
J'ai utilisé la règle ci-dessus pour transférer www vers no www et cela fonctionne bien pour la page d'accueil, mais sur les pages internes qu'ils transfèrent vers /index.php
J'ai trouvé cette autre règle dans mon fichier .htaccess qui est à l'origine de cela, mais je ne sais pas quoi faire à ce sujet. Toute suggestion sera appréciée:
la source
www à non www avec https
la source
Si vous souhaitez supprimer
www
les deuxhttp
ethttps
, utilisez ce qui suit:Cela redirige Non ssl
à
Et SSL
à
sur apache,
2.4.*
vous pouvez accomplir cela en utilisant une directiveRedirect
withif
,la source
utiliser: Javascript / jQuery
Ou .htaccess:
et La méthode PHP:
Ajax
la source
La seule façon de le faire fonctionner ...
la source
Si vous forcez www. en url ou en forçant le protocole SSL, essayez ensuite d'utiliser les variations possibles du fichier htaccess, telles que:
la source
RewriteCond %{SERVER_PORT} 80
je suggère d'utiliser une telle vérification plus universelle:RewriteCond %{HTTPS} off
La réponse sélectionnée et de nombreuses autres solutions ici ont supprimé la partie de l'URL après /, donc en gros, elle est toujours redirigée vers le domaine principal, du moins pour moi .. Donc j'ajoute un échantillon de travail en respectant le chemin complet après la barre oblique ..
la source
Approche alternative si la personnalisation .htaccess n'est pas l'option idéale:
J'ai créé un serveur de redirection simple pour un usage public. Ajoutez simplement un enregistrement A ou CNAME:
Plus d'infos: https://simpleredirect.net
la source
Je ne sais pas pourquoi vous souhaitez supprimer www. Mais la version inverse serait:
Et l'avantage de ce script est: si vous avez quelque chose comme test.whattimein.com ou tout autre (environnement de développement / test), il ne redirigera pas U vers l'environnement d'origine.
la source
Ceci est mis à jour pour fonctionner sur Apache 2.4:
Le seul changement par rapport à Michael est de supprimer le
[NC]
, ce qui produit l'erreur "AH00665":la source
RewriteCond %{REQUEST_FILENAME} !-f [NC]
). LeNC
drapeau fait peu de différence dans ce qui précède, cependant, la raison pour laquelle leNC
drapeau doit être utilisé ici est d'attraper la petite fraction du trafic de bot qui envoie (incorrectement) un nom d'hôte en majuscule.Ajouté si localhost, ignore la redirection (à des fins de développement dans un environnement local). Si ce n'est pas localhost ET (pas https OU c'est www), redirigez vers https et non www.
la source
Bonjour, vous pouvez utiliser les règles suivantes sur votre fichier htaccess:
la source