המרת כללי rewrite | english русский 简体中文 עברית 日本語 türkçe חדשות [אנגלית] אודות הורדה [אנגלית] דיווחי אבטחה [אנגלית] תיעוד שאלות נפוצות [אנגלית] קישורים [אנגלית] תמיכה [אנגלית] trac wiki nginx.com | |
This translation may be out of date. Check the English version for recent changes.
הפנייה לאתר ראשימשתמשים שבמהלך חיי האירוח המשותף נהגו להגדיר הכל באמצעות שימוש רק בקובצי htaccess. של Apache, יתרגמו בדרך כלל את הכללים הבאים: RewriteCond %{HTTP_HOST} example.org RewriteRule (.*) http://www.example.org$1 למשהו כזה: server { listen 80; server_name www.example.org example.org; if ($http_host = example.org) { rewrite (.*) http://www.example.org$1; } ... }
צורה זו היא שגוייה, מסובכת, ולא יעילה.
הדרך הנכונה היא להגדיר שרת נפרד עבור server { listen 80; server_name example.org; rewrite ^ http://www.example.org$request_uri?; } server { listen 80; server_name www.example.org; ... }
דוגמה נוספת, במקום הגיון הפוך: כל מה שהוא לא
RewriteCond %{HTTP_HOST} !example.com RewriteCond %{HTTP_HOST} !www.example.com RewriteRule (.*) http://www.example.com$1
עלייך רק להגדיר את server { listen 80; server_name example.org www.example.org; ... } server { listen 80 default_server; server_name _; rewrite ^ http://example.org$request_uri?; }
המרת כללי Mongrelכללי Mongrel טיפוסיים: DocumentRoot /var/www/myapp.com/current/public RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ %{DOCUMENT_ROOT}/system/maintenance.html [L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*)$ $1 [QSA,L] RewriteCond %{REQUEST_FILENAME}/index.html -f RewriteRule ^(.*)$ $1/index.html [QSA,L] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.*)$ $1/index.html [QSA,L] RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L] יש להמיר כך location / { root /var/www/myapp.com/current/public; try_files /system/maintenance.html $uri $uri/index.html $uri.html @mongrel; } location @mongrel { proxy_pass http://mongrel; }
|