คำถามติดแท็ก rewrite

การเขียน URL ใหม่จะจับคู่ URL ที่เข้ามากับ URL ที่ถูกปรับเปลี่ยนเพื่อให้การร้องขอนั้นดำเนินการราวกับว่ามีการทำคำขอดั้งเดิมกับ URL ที่ปรับเปลี่ยนแล้ว สิ่งนี้มักจะใช้เพื่อให้ URL ที่เป็นมิตรกับเครื่องมือค้นหา

4
Nginx Redirect ผ่าน Proxy, Rewrite และ Preserve URL
ใน Nginx เราพยายามเปลี่ยนเส้นทาง URL ดังนี้: http://example.com/some/path -> http://192.168.1.24 ตำแหน่งที่ผู้ใช้ยังคงเห็น URL ดั้งเดิมในเบราว์เซอร์ของตน เมื่อผู้ใช้ถูกเปลี่ยนเส้นทางกล่าวว่าพวกเขาคลิกที่ลิงค์ไป/section/index.htmlเราต้องการให้คำขอที่นำไปสู่การเปลี่ยนเส้นทาง http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html และอีกครั้งยังคงรักษา URL เดิม ความพยายามของเราเกี่ยวข้องกับการแก้ปัญหาต่าง ๆ โดยใช้พร็อกซีและกฎการเขียนซ้ำและด้านล่างแสดงการกำหนดค่าที่ทำให้เราใกล้เคียงกับโซลูชันมากที่สุด (โปรดทราบว่านี่คือการกำหนดค่าเว็บเซิร์ฟเวอร์สำหรับexample.comเว็บเซิร์ฟเวอร์) อย่างไรก็ตามยังมีปัญหาสองข้อสำหรับสิ่งนี้: มันไม่ได้เขียนใหม่อย่างถูกต้องในที่ URL คำขอที่ได้รับจากเว็บเซิร์ฟเวอร์http://192.168.1.24รวมถึง/some/pathและดังนั้นจึงไม่สามารถให้บริการหน้าที่จำเป็น เมื่อคุณวางบนลิงค์เมื่อเพจได้รับการบริการ/some/pathหายไปจาก URL server { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index …

7
ลบ“ www” และเปลี่ยนเส้นทางไปที่“ https” ด้วย nginx
ฉันต้องการสร้างกฎใน nginx ที่ทำสองสิ่ง: ลบ "www." จาก URI คำขอ เปลี่ยนเส้นทางไปที่ "https" หาก URI คำขอคือ "http" มีตัวอย่างมากมายเกี่ยวกับวิธีการทำสิ่งเหล่านั้นทีละอย่าง แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่ทำได้อย่างถูกต้อง (เช่นไม่สร้างลูปการเปลี่ยนเส้นทางและจัดการทุกกรณีอย่างเหมาะสม) จำเป็นต้องจัดการกับกรณีเหล่านี้ทั้งหมด: 1. http://www.example.com/path 2. https://www.example.com/path 3. http://example.com/path 4. https://example.com/path สิ่งเหล่านี้ควรจบที่https://example.com/path (# 4) โดยไม่ต้องวนซ้ำ ความคิดใด ๆ
57 nginx  ssl  https  rewrite 

4
Nginx เปลี่ยนเส้นทางหนึ่งเส้นทางไปยังเส้นทางอื่น
ฉันแน่ใจว่าสิ่งนี้ถูกถามมาก่อน แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่ใช้งานได้ เว็บไซต์เปลี่ยนบริการ CMS แต่มีโดเมนเดียวกันฉันจะตั้งค่าการเขียนซ้ำ nginx สำหรับหน้าเดียวได้อย่างไร เช่น หน้าเก่า http://sitedomain.co.uk/content/unique-page-name หน้าใหม่ http://sitedomain.co.uk/new-name/unique-page-name โปรดทราบว่าฉันไม่ต้องการให้ทุกสิ่งในหน้าเนื้อหาถูกเปลี่ยนเส้นทาง แต่แท้จริงแล้วเพียงแค่ URL ที่กล่าวถึงข้างต้น ฉันมีการเปลี่ยนเส้นทางประมาณ 9 รายการซึ่งไม่ใช่รูปแบบที่เหมาะสม ขอบคุณ! แก้ไข: ฉันพบโซลูชันนี้ซึ่งดูเหมือนว่าจะใช้งานได้ยกเว้นความจริงที่ว่ามันเปลี่ยนเส้นทางโดยไม่มีเครื่องหมายทับ: if ( $request_filename ~ content/unique-page-name/ ) { rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent; } แต่นี่เป็นการเปลี่ยนเส้นทางไปที่: http://sitedomain.co.uknew-name/unique-page-name/
51 nginx  rewrite 

2
การเขียน url ใหม่ของ nginx: ความแตกต่างระหว่างตัวแบ่งและตัวสุดท้าย
ฉันไม่เข้าใจความแตกต่างระหว่างการหยุดพักและครั้งสุดท้าย (ตั้งค่าสถานะการเขียนใหม่) เอกสารค่อนข้างลึกซึ้ง ฉันพยายามสลับระหว่างสองอย่างในการกำหนดค่าบางอย่างของฉัน แต่ฉันไม่เห็นความแตกต่างของพฤติกรรม ใครช่วยอธิบายธงเหล่านี้ให้ละเอียดหน่อยได้ไหม? มีตัวอย่างที่แสดงพฤติกรรมที่แตกต่างกันโดยเฉพาะอย่างยิ่งเมื่อพลิกธงหนึ่งไปยังอีก
45 nginx  rewrite 

1
Nginx - ความหมายของ ~ (tilde) ในบล็อกตำแหน่งของ nginx.conf
ความหมายของเครื่องหมายตัวหนอนหลังจากบล็อกตำแหน่งในการกำหนดค่า nginx คืออะไร? ตัวอย่างเช่น location ~ ^/download/(.*)$ { alias /home/website/files/$1; } ความแตกต่างระหว่างการมีและไม่มีการ "~"คืออะไร?
45 nginx  rewrite 

4
วิธี จำกัด การเข้าถึงไดเรกทอรีและส่วนย่อย
ฉันจำเป็นต้อง จำกัด การเข้าถึงไฟล์หรือส่วนย่อยใน direstory "testdir" ความมั่นใจของฉัน: ... location ~* ^.+\.(jpg|txt)$ { root /var/www/site; } location /testdir { deny all; return 404; } ... ในการกำหนดค่าของฉันฉันไม่มีข้อ จำกัด ใน / testdir / jpg_or_txt-files ทำอย่างไร?
42 nginx  rewrite  deny 

3
อะไรคือความแตกต่างระหว่างตัวแปร Nginx $ host, $ http_host และ $ server_name?
ความแตกต่างระหว่างสามตัวแปร Nginx คืออะไร$host, $http_hostและ$server_name? ฉันมีกฎการเขียนซ้ำที่ฉันไม่แน่ใจว่าควรใช้อันไหน: location = /vb/showthread.php { # /vb/showthread.php?50271-What-s-happening&p=846039 if ($arg_p) { return 301 $scheme://$host/forum/index.php?posts/$arg_p/; } ฉันกำลังมองหาคำตอบที่ไม่เพียง แต่พูดว่า 'ใช้ตัวแปร ___ ในกฎการเขียนซ้ำของคุณ' แต่ยังอธิบายถึงความแตกต่างทางทฤษฎีระหว่างพวกเขาด้วย
42 nginx  rewrite 

1
วิธีลบส่วนของ URL ใน Nginx อย่างรวดเร็วและง่ายดายด้วย HttpRewriteModule
ฉันรู้เกี่ยวกับHttpRewriteModuleแต่ฉันไม่รู้วิธีจัดการ regex และฉันจะต้องเปลี่ยนเส้นทาง URL ทั้งหมดภายในไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งโดยเฉพาะ example.com/component/tag/whatever ไปยัง example.com/tag/whatever บางคนบอกฉันได้ว่าจะทำอย่างไรใน Nginx

2
HAProxy reqrep ลบ URI จากคำขอแบ็กเอนด์
คำถามด่วนจริงเกี่ยวกับการตอบสนอง HAProxy ฉันพยายามเขียนใหม่ / แทนที่คำขอที่ส่งไปยังแบ็กเอนด์ ฉันมีโดเมนตัวอย่างต่อไปนี้และ URIs ทั้งการแชร์ชื่อโดเมนเดียวกัน แต่เว็บเซิร์ฟเวอร์ส่วนหลังที่ต่างกัน http://domain/web1 http://domain/web2 ฉันต้องการ web1 เพื่อไปที่ backend webfarm1 และ web2 เพื่อไปที่ webfarm2 ปัจจุบันนี้เกิดขึ้น อย่างไรก็ตามฉันต้องการที่จะตัดการ web1 หรือ web2 URI เมื่อคำขอถูกส่งไปยังแบ็กเอนด์ นี่คือ haproxy.cfg ของฉัน frontend webVIP_80 mode http bind :80 #acl routing to backend acl web1_path path_beg /web1 acl web2_path path_beg /web2 #which backend …

3
วิธีเขียนส่วนโดเมนของ Set-Cookie ในพร็อกซีย้อนกลับ nginx ได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Server Fault อพยพ 8 ปีที่ผ่านมา ฉันมีพร็อกซีย้อนกลับ nginx อย่างง่าย: server { server_name external.domain.com; location / { proxy_pass http://backend.int/; } } ปัญหาคือว่าSet-Cookieส่วนหัวของการตอบสนองมี;Domain=backend.intเพราะส่วนแบ็กเอนด์ไม่ทราบว่ามันกำลังถูกพร็อกซีย้อนกลับ ฉันจะทำให้ nginx เขียนเนื้อหาของSet-Cookieส่วนหัวการตอบกลับแทนที่;Domain=backend.intด้วยได้;Domain=external.domain.comอย่างไร การผ่านHostส่วนหัวไม่เปลี่ยนแปลงไม่ได้เป็นตัวเลือกในกรณีนี้ Apache httpdมีคุณสมบัตินี้อยู่ครู่หนึ่งดูProxyPassReverseCookieDomainแต่ฉันไม่สามารถหาวิธีที่จะทำได้ใน nginx

10
วิธีการฉีดโค้ด HTML ลงในหน้า HTML ที่ส่งมอบทุกครั้งหรือไม่
ฉันได้รับApache web serverที่ส่งหน้า HTML คงที่ ด้วยเหตุผลบางอย่างฉันไม่สามารถเปลี่ยนไฟล์ได้ด้วยตัวเอง แต่ฉันก็ยังต้องการที่จะแทรก HTML บางส่วนลงในทุก ๆ เพจที่กำลังแสดงอยู่ เป็นไปได้ด้วยmod_proxyหรือไม่ ถ้าไม่มีใครสามารถแนะนำซอฟต์แวร์ที่มีคุณสมบัติดังกล่าว แก้ไข: ฉันต้องแทรกโฆษณาแบนเนอร์บางประเภท (เช่นกjavascript) และพิกเซลการติดตาม

2
ปิดใช้งานการถอดรหัส URL ในพร็อกซี nginx
เมื่อฉันเรียกดู URL นี้: http://localhost:8080/foo/%5B-%5Dเซิร์ฟเวอร์ ( nc -l 8080) ได้รับตามที่เป็นอยู่: GET /foo/%5B-%5D HTTP/1.1 อย่างไรก็ตามเมื่อฉันพร็อกซีแอปพลิเคชันนี้ผ่าน nginx (1.1.19): location /foo { proxy_pass http://localhost:8080/foo; } คำขอเดียวกันที่ถูกส่งผ่านพอร์ต nginx ถูกส่งต่อด้วยเส้นทางที่ถอดรหัส: GET /foo/[-] HTTP/1.1 วงเล็บเหลี่ยมที่ถอดรหัสในเส้นทาง GET ทำให้เกิดข้อผิดพลาดในเซิร์ฟเวอร์เป้าหมาย ( สถานะ HTTP 400 - อักขระผิดกฎหมายในเส้นทาง ... ) เมื่อพวกเขามาถึงยังไม่ได้หลบหนี มีวิธีการปิดการใช้งานการถอดรหัส URL หรือเข้ารหัสมันกลับเพื่อให้เซิร์ฟเวอร์เป้าหมายได้รับเส้นทางเดียวกันเมื่อส่งผ่าน nginx หรือไม่ กฎการเขียน URL ที่ฉลาดขึ้นมาบ้าง?
21 nginx  rewrite  url 

1
ฉันจะส่งออกกฎการเขียน URL ใหม่ได้อย่างไร
เป็นไปได้หรือไม่ที่จะส่งออกกฎการเขียน URL ซ้ำสำหรับ IIS7 ฉันกำลังตั้งค่าซ้ำของเว็บไซต์สำหรับการใช้งานภายใน (ทดสอบ) และต้องการทำซ้ำกฎ URL Rewrite ทั้งหมดโดยไม่ต้องป้อนด้วยตนเอง มีตัวเลือกการนำเข้า แต่ไม่มี 'ส่งออก' ที่ชัดเจน ขอบคุณ!

4
nginx + PHP-FPM = ข้อผิดพลาด“ สิทธิ์ถูกปฏิเสธ” 13 ในบันทึก nginx; ข้อผิดพลาดในการกำหนดค่า?
ฉันมี nginx 0.7x + PHP-FPM ทำงานภายใต้ PHP 5.2.10 บนเซิร์ฟเวอร์ RHEL5 หนึ่งตัว แต่พยายามทำซ้ำการตั้งค่านั้นภายใต้ PHP-FPM ที่รวมอยู่ใน PHP 5.3.3 บนเซิร์ฟเวอร์ตัวที่สองฉันมี ปัญหาบางอย่างเกี่ยวกับข้อผิดพลาดการอนุญาตทุกครั้งที่มี GET FPM เริ่มต้นแล้วและยืนยันว่า fastcgi กำลังรับฟัง 9000 แต่ทุกครั้งที่ฉันรับ GET ฉันเห็นข้อผิดพลาดนี้ในบันทึก nginx: 2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com" Barebones …

5
ฉันจะบังคับให้ URL ของฉันเริ่มต้นด้วย www ได้อย่างไร
ฉันต้องการที่จะแน่ใจว่าผู้ใช้มาถึงแม้ว่าพวกเขาจะมาถึงผ่านนามแฝงwww.mydomain.com mydomain.comนี่คือเพื่อให้ฉันสามารถควบคุมคุกกี้ในโดเมนย่อยและเพื่อให้ Google เห็นหนึ่งโดเมนเดียวและไม่หลบ URL ฉันจะทำสิ่งนี้ด้วย apache ได้อย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.