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

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

1
วิธีแยกเฉพาะชื่อไฟล์จากคำร้องขอ uri
ฉันพยายามเขียนคำร้องขอ uri ใหม่โดยขึ้นอยู่กับนามสกุลของไฟล์จากนั้นแตกเฉพาะชื่อไฟล์จาก uri และเก็บไว้ในโฟลเดอร์อื่น ปัญหาที่เกิดขึ้นที่นี่จะไม่มีการกำหนดไว้ล่วงหน้าสำหรับตัวแปรชื่อไฟล์และตัวแปรที่มีอยู่uri, request_uriและrequest_filenameจะให้ URI เต็ม server{ set $file_folder D:/nginx-1.0.15/imageAll/; location ~*+.(gif|jpg)$ { try_files $uri @imgstore; } location @imgstore { proxy_pass $file_folder$request_filename; proxy_store on; proxy_temp_path /nginx-1.0.15/images/; proxy_store_access user:rw group:rw all:r; } } สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือได้รับนามสกุล. jpg หรือ. gif ว่าเมื่อฉัน$1แทนที่$request_filenameสิ่งนี้: location @imgstore { proxy_pass $file_folder$1; } ดังนั้นฉันต้องการทราบ: จะรับชื่อไฟล์จากคำขอได้อย่างไร? มันเป็นวิธีที่ถูกต้องในการจัดเก็บภาพจากโฟลเดอร์หนึ่งไปอีกอันหนึ่งหรือไม่?
11 nginx  rewrite  images 

1
nginx: เขียนทั้งหมดยกเว้นที่เดียว
ตอนนี้ nginx ของฉันกำลังเขียนหลายโดเมนไปยังโดเมนหลักเดียวที่เราใช้อยู่ นี่คือหนึ่งกฎจากการกำหนดค่าของฉัน: server { listen X.X.X.X:80; server_name .exampleblog.org; rewrite ^(.*) http://blog.example.org$1 permanent; } ทุกคำขอไปยัง ** exampleblog.org * จะถูกเปลี่ยนเส้นทางไปยัง blog.example.org ตอนนี้ฉันต้องการwww.exampleblog.org/+และexampleblog.org/+เพื่อเปลี่ยนเส้นทางผู้ใช้ไปยังหน้า Google Plus ของเรา ลองรุ่นต่าง ๆ ของ: server { listen X.X.X.X:80; server_name .exampleblog.org; location /+ { rewrite ^ https://plus.google.com/12345678901234567890/ permanent; } rewrite ^(.*) http://blog.example.org$1 permanent; } รุ่นด้านบนและรุ่นอื่น ๆ เพียงแค่เปลี่ยนเส้นทางไปที่blog.example.org/+ …

4
เปลี่ยนเส้นทางชั่วคราว * ทั้งหมด * คำขอ HTTP / HTTPS ใน IIS ไปยังหน้า“ การบำรุงรักษาเซิร์ฟเวอร์”
เรามีเซิร์ฟเวอร์ IIS ที่โฮสต์หลายร้อยเว็บแอปแยกต่างหากและเซิร์ฟเวอร์ฐานข้อมูลทางกายภาพที่โฮสต์แอปเหล่านี้จะถูกออฟไลน์เพื่อการบำรุงรักษาเป็นระยะเวลาสั้น ๆ (เราคาดว่าจะใช้เวลาน้อยกว่า 15 นาที) ในช่วงเวลานั้นเราต้องการเปลี่ยนเส้นทางการเข้าชมทั้งหมดที่เข้ามาในเว็บไซต์ใด ๆ ไปยังหน้า "เรากำลังอยู่ระหว่างการบำรุงรักษา" ฉันรู้ว่าฉันสามารถทำได้โดยไปที่ทุกเว็บแอปและตั้งค่ากฎการเขียน IIS ซ้ำที่ส่งผู้ใช้ไปยังหน้าอื่นสำหรับคำขอทั้งหมดในแอปนั้น แต่เราจะต้องใช้เวลานานกว่านั้นในการดูแลฐานข้อมูล! ฉันลองสามสิ่งแล้วไม่มีสิ่งใดที่ได้ผล: กฎการเขียนซ้ำสากลของ IIS ฉันค้นหาวิธีง่ายๆในการใช้กฎกับไซต์ทั้งหมดในคราวเดียว - จากนั้นสามารถ "เลิกทำ" กฎนั้นในขั้นตอนที่ไม่เจ็บปวดอย่างเท่าเทียมกัน จนถึงตอนนี้ความพยายามของฉันก็ไม่ได้ผล ฉันลองใส่กฎการเขียนซ้ำนี้ใน web.config ทั่วโลกของฉันที่ W: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config: <configuration> <system.webServer> <rewrite> <rules> <rule name="redirect all requests" stopProcessing="true"> <match …

2
IIS Rewrite เขียนแมปและสตริงการสืบค้นซ้ำ
โปรดช่วยฉันเข้าใจการเขียนแผนที่ใหม่ฉันมีการตั้งค่านี้: <rewriteMap name="MyMap"> <add key="/pages" value="/website/pages/index.aspx" /> <add key="/pages/page-1" value="/website/pages/page-1/index.aspx" /> <add key="/pages/page-1/section-1" value="/website/pages/page-1/section-1.aspx" /> </rewriteMap> นี่คือกฎของฉัน: <rule name="Rewrite rule for MyMap" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{MyMap:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Rewrite" url="{C:1}" appendQueryString="true" /> </rule> สิ่งนี้ใช้งานได้หากฉันพยายามเข้าถึงหน้าเหล่านี้: www.mydomain.com/pages (ตกลง) www.mydomain.com/pages/page-1 (ตกลง) www.mydomain.com/pages/page-1/section-1 (ตกลง) แต่ฉันต้องการความเป็นไปได้ที่จะเพิ่มสตริงแบบสอบถามในหน้าใด ๆ เหล่านี้ตัวอย่าง: …
10 iis-7  rewrite 

3
Apache: จะตรวจสอบบันทึกการเปลี่ยนเส้นทางได้ที่ไหน
ฉันมีความซับซ้อนRewriteCondและRewriteRuleในเครื่องเดียว และตามกฎเหล่านี้คำขอบางส่วนจะถูกเปลี่ยนเส้นทางไปยังเครื่องอื่น ดังนั้นจะมีบันทึก Apache ที่แสดงให้เห็นชัดเจนว่าเกิดการเปลี่ยนเส้นทางอย่างไร? เพราะการเปลี่ยนเส้นทางเกิดขึ้นในแบบที่ฉันไม่คาดคิด

1
การเปลี่ยนเส้นทางอย่างง่ายของ Nginx ของผลิตภัณฑ์จากหมวดหมู่เก่าถึงใหม่
ฉันกำลังเปลี่ยนเส้นทางของผลิตภัณฑ์จากหมวดหมู่เก่าไปยังหมวดหมู่ใหม่ ฉันจัดการเพื่อให้ทำงานกับกฎต่อไปนี้: rewrite ^/old-category/(.*) /new-category/$1; แต่ฉันต้องการที่จะรู้ว่าเมื่อไหร่ฉันควรใช้ "end line" sign $ และอะไรคือความแตกต่างกับมันหรือไม่มีมันในกรณีของฉัน ตัวอย่างเช่น: rewrite ^/old-category/(.*)$ /new-category/$1; นอกจากนี้ฉันต้องการเปลี่ยนเส้นทางผู้ใช้หากพวกเขาเพียงแค่เขียนชื่อหมวดหมู่เก่า (ไม่มีผลิตภัณฑ์) ฉันควรสร้างกฎใหม่เฉพาะสำหรับการเปลี่ยนเส้นทางหมวดหมู่หรือฉันสามารถแก้ไขกฎปัจจุบันด้านบนเพื่อทำงานในทั้งสองกรณี ขอบคุณสำหรับคำตอบล่วงหน้า

4
เหตุใดฉันจึงได้รับเครื่องหมายทับสองด้านโดยขึ้นอยู่กับว่า RewriteRule ของฉันอยู่ที่ใด
ฉันใช้รหัสต่อไปนี้เพื่อนำคำร้องขอ www ทั้งหมดไปยัง URL ที่ไม่ใช่ www: RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] สิ่งนี้ใช้งานได้ดีในไฟล์. htaccess ในรูทของเว็บไซต์ของฉัน ตัวอย่างเช่น www.example.com -> example.com/ www.example.com/ -> example.com/ www.example.com/other_page -> example.com/other_page อย่างไรก็ตามหากฉันย้ายรหัสเดียวกันนี้ไปยังการกำหนดค่า VirtualHost ของฉัน URL ที่เขียนใหม่จะมีเครื่องหมายทับสองด้าน www.example.com -> example.com// www.example.com/ -> example.com // www.example.com/other_page -> example.com//other_page ฉันแก้ไขได้โดยลบเครื่องหมายทับจากกฎการเขียนซ้ำ: RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.org$ …

3
mod_rewrite ไม่ส่งต่อพารามิเตอร์ GET
ฉันมีปัญหาในการตั้งค่า Apache ด้วย mod_rewrite บนเครื่องพัฒนาของฉัน Mod_rewrite ทำงานอยู่และทำงานได้ดีสำหรับกฎบางข้อ กฎบางอย่างไม่ทำงานตามที่ตั้งใจไว้เช่นนี้: RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2 ใน static.php ฉันทำสิ่งนี้ (สำหรับการดีบัก): <?php print_r($_GET); print_r($_POST); print_r($_SERVER); die(); สิ่งที่พิมพ์ (ลบบางรายการออกจากอาร์เรย์ $ _SERVER): Array ( ) Array ( ) Array ( [SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address> [SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with …

2
Apache2 และเขียนแผนที่ใหม่ - พยายามหลายชั่วโมง
ฉันติดอยู่กับปัญหาการเขียนใหม่แผนที่ สิ่งที่ฉันต้องการจะทำคือเปลี่ยนเส้นทาง URL เก่าแก่นับพันไปยัง URL ใหม่ ฉันจะสร้างแผนที่ด้วยตนเอง แต่ฉันต้องการรหัสนี้ในการทำงาน RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.cat_4)(.*) RewriteRule .* ${url_rewrite_map:$1|NOTFOUND}? [R=301,L] ฉันต้องการแผนที่เพื่อเป็นแบบนี้: example.com/abcd/cat_4 http://example.com/345_exact_address_of_page URL เก่ามีลักษณะดังนี้: http://example.com/abcd/cat_4=0?Xi4B7WoN;;54 และฉันต้องการให้พวกเขาเขียนใหม่เป็น: http://example.com/345_exact_address_of_page ฉันลองหลาย ๆ อย่างแล้ว แต่ฉันไม่สามารถทำงานได้ ... คุณช่วยฉันได้ไหม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.