J'ai besoin de rediriger chaque http://test.com demande à http://www.test.com . Comment cela peut-il être fait.
Dans le bloc serveur, j'ai essayé d'ajouter
rewrite ^/(.*) http://www.test.com/$1 permanent;
mais dans le navigateur, il est dit
The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for
this address in a way that will never complete.
mon bloc serveur ressemble à
server {
listen 80;
server_name test.com;
client_max_body_size 10M;
client_body_buffer_size 128k;
root /home/test/test/public;
passenger_enabled on;
Rails_env production;
#rewrite ^/(.*) http://www.test.com/$1 permanent;
#rewrite ^(.*)$ $scheme://www.test.com$1;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
La meilleure façon de faire ce que vous voulez est d’ajouter un autre bloc serveur:
server {
#implemented by default, change if you need different ip or port
#listen *:80 | *:8000;
server_name test.com;
return 301 $scheme://www.test.com$request_uri;
}
Et éditez la variable nom_serveur du bloc de votre serveur principal comme suit:
server_name www.test.com;
Important : Le nouveau bloc server
est la bonne façon de le faire, if
est mauvais . Vous devez utiliser des emplacements et des serveurs au lieu de if
si cela est possible. Rewrite
est parfois mal aussi , donc remplacé par return
.
Semblable à une autre réponse ici, mais changez le http dans la réécriture en $ scheme comme suit:
server {
listen 80;
server_name test.com;
rewrite ^ $scheme://www.test.com$request_uri? permanent;
}
Et éditez la variable nom_serveur du bloc de votre serveur principal comme suit:
server_name www.test.com;
Je devais le faire pour rediriger www.test.com vers test.com.
Vérifiez d’abord que vous avez installé Nginx avec le module de réécriture HTTP. Pour installer ceci nous avons besoin de pcre-library
Comment installer la bibliothèque pcre
Si les actions mentionnées ci-dessus sont terminées ou si vous les avez déjà, ajoutez simplement le code ci-dessous dans votre bloc de serveur nginx.
if ($Host !~* ^www\.) {
rewrite ^(.*)$ http://www.$Host$1 permanent;
}
Pour supprimer www de chaque requête, vous pouvez utiliser
if ($Host = 'www.your_domain.com' ) {
rewrite ^/(.*)$ http://your_domain.com/$1 permanent;
}
donc votre bloc serveur ressemblera à
server {
listen 80;
server_name test.com;
if ($Host !~* ^www\.) {
rewrite ^(.*)$ http://www.$Host$1 permanent;
}
client_max_body_size 10M;
client_body_buffer_size 128k;
root /home/test/test/public;
passenger_enabled on;
Rails_env production;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}