Path: blob/main/xml/it/docs/http/converting_rewrite_rules.xml
1 views
<!--1Copyright (C) Igor Sysoev2Copyright (C) Nginx, Inc.3-->45<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">67<article name="Convertire rewrite rule"8link="/it/docs/http/converting_rewrite_rules.html"9lang="it"10translator="Angelo Papadia"11rev="1">121314<section name="Redirect ad un sito principale">1516<para>17Chi, nel corso della propria esperienza con host condivisi, e' sempre18stato abituato a configurare <i>tutto</i> usando <i>solo</i> i file19.htaccess di Apache, in genere converte le seguenti regole:2021<programlisting>22RewriteCond %{HTTP_HOST} example.org23RewriteRule (.*) http://www.example.org$124</programlisting>2526in qualcosa tipo:2728<programlisting>29server {30listen 80;31server_name www.example.org example.org;32if ($http_host = example.org) {33rewrite (.*) http://www.example.org$1;34}35...36}37</programlisting>38</para>3940<para>41Si tratta di una soluzione errata, poco elegante e inefficiente.42La soluzione corretta prevede la definizione di un server distinto per43<literal>example.org</literal>:4445<programlisting>46server {47listen 80;48server_name example.org;49return 301 http://www.example.org$request_uri;50}5152server {53listen 80;54server_name www.example.org;55...56}57</programlisting>5859<note>60Nelle versioni antecedenti la 0.9.1, i redirect possono essere definiti con:61<programlisting>62rewrite ^ http://www.example.org$request_uri?;63</programlisting>64</note>6566</para>6768</section>697071<section>7273<para>74Un altro esempio:75invece della logica “upside-down”, vale a dire “tutto quello76che non e' <literal>example.com</literal> ne' <literal>www.example.com</literal>”:7778<programlisting>79RewriteCond %{HTTP_HOST} !example.com80RewriteCond %{HTTP_HOST} !www.example.com81RewriteRule (.*) http://www.example.com$182</programlisting>8384e' meglio semplicemente definire85<literal>example.com</literal>, <literal>www.example.com</literal>,86e “tutto il resto”:8788<programlisting>89server {90listen 80;91server_name example.com www.example.com;92...93}9495server {96listen 80 default_server;97server_name _;98return 301 http://example.com$request_uri;99}100</programlisting>101102<note>103Nelle versioni antecedenti la 0.9.1, i redirect possono essere definiti con:104<programlisting>105rewrite ^ http://example.com$request_uri?;106</programlisting>107</note>108109</para>110111</section>112113114<section id="converting_mongrel_rules"115name="Conversione delle regole di Mongrel">116117<para>118Regole di Mongrel tipiche, quali:119120<programlisting>121DocumentRoot /var/www/myapp.com/current/public122123RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f124RewriteCond %{SCRIPT_FILENAME} !maintenance.html125RewriteRule ^.*$ %{DOCUMENT_ROOT}/system/maintenance.html [L]126127RewriteCond %{REQUEST_FILENAME} -f128RewriteRule ^(.*)$ $1 [QSA,L]129130RewriteCond %{REQUEST_FILENAME}/index.html -f131RewriteRule ^(.*)$ $1/index.html [QSA,L]132133RewriteCond %{REQUEST_FILENAME}.html -f134RewriteRule ^(.*)$ $1/index.html [QSA,L]135136RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]137</programlisting>138139andrebbero convertite in:140141<programlisting>142location / {143root /var/www/myapp.com/current/public;144145try_files /system/maintenance.html146$uri $uri/index.html $uri.html147@mongrel;148}149150location @mongrel {151proxy_pass http://mongrel;152}153</programlisting>154</para>155156</section>157158</article>159160161