Score:2

Create "shortcut" for GET parameters redirection in Apache2

ธง cn

I try to create a config in apache server that will transfer the url

foo.bar/baz/hq

to

foo.bar/baz#a=1;b=2;c=3

where baz can be anything. I tried this (see https://stackoverflow.com/a/8606198/3475778)

RewriteRule ^([A-Za-z0-9-]+)/hq$ $1#foo=bar [NC,NE,R=302]

but somehow the redirect doesnt seem to work and I do not know why.

My conf file looks like this - sorry it is a bit messy, I am not a sysadmin.

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName xxx
    Redirect    302 /   http://xxx/


SSLCertificateFile /etc/letsencrypt/live/xxx/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName xxx
    ErrorLog /var/log/apache2/xxx.net-error.log

    RewriteEngine on
    RewriteRule ^([A-Za-z0-9-]+)/hq$ $1#foo=bar [NC,NE,R=302]

    ProxyPass "/" "http://localhost:8000/"
    ProxyPassReverse "/" "http://localhost:8000/"
    ProxyPass "/http-bind" "http://localhost:8000/http-bind/"
    ProxyPassReverse "/http-bind" "http://localhost:8000/http-bind"
    RewriteEngine on
# Some rewrite rules in this file were disabled on your HTTPS site,
# because they have the potential to create redirection loops.

        RewriteCond %{HTTP:Upgrade} websocket [NC]
        RewriteCond %{HTTP:Connection} upgrade [NC]
        RewriteRule ^/?(.*) "ws://localhost:8000/$1" [P,L]


SSLCertificateFile /etc/letsencrypt/live/xxx/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
user10489 avatar
nc flag
เหตุใดจึงมีความคิดเห็นเกี่ยวกับการปิดใช้งานกฎการเขียนซ้ำเนื่องจากการวนรอบการเปลี่ยนเส้นทาง
capitalg avatar
cn flag
@ user10489 ไฟล์/ส่วนนั้นถูกสร้างขึ้นโดยอัตโนมัติจาก certbot
Score:0
ธง nc

ส่วนของ url ตามหลัง # ไม่ได้ถูกส่งไปยังเว็บเซิร์ฟเวอร์ใน GET ดังนั้นจึงไม่มีทางรู้ว่าการเปลี่ยนเส้นทางนั้นได้ทำไปแล้วหรือไม่ สิ่งนี้จะกลายเป็นการเปลี่ยนเส้นทางแบบเรียกซ้ำโดยไม่มีทางที่จะหยุดการวนซ้ำ

หากคุณต้องการทำสิ่งนี้ คุณต้องทำฝั่งไคลเอนต์ อาจเป็นในจาวาสคริปต์ ซึ่งสามารถเข้าถึงส่วนยึดของ URL ได้

คุณสามารถส่งลิงก์ที่มีเครื่องหมาย # ไปให้ใครบางคนจากแอปฝั่งเซิร์ฟเวอร์ได้ แต่จะมีประโยชน์สำหรับลิงก์ที่นำไปยังหน้านี้เท่านั้น (รวมถึงลิงก์ในหน้าเดียวกันด้วย) หากคุณต้องการดำเนินการจากหน้าเดียวกัน คุณยังคงต้องการบางอย่างจากฝั่งไคลเอ็นต์เพื่อทำให้มันเกิดขึ้น

capitalg avatar
cn flag
ขอบคุณสำหรับคำตอบของคุณ แต่คำตอบ SE ที่เชื่อมโยง ( https://stackoverflow.com/a/8606198/3475778 ) กล่าวว่าการเปลี่ยนเส้นทางไปยัง `#` เป็นไปได้ผ่านการเปลี่ยนเส้นทางซึ่งเป็นสิ่งที่ฉันต้องการทำที่นี่ การเปลี่ยนเส้นทางจากด้านบนไม่ควรวนซ้ำ เพราะเฉพาะกับภาคผนวก `*/hq` คุณจะได้รับการเปลี่ยนเส้นทาง - URL นี้เข้าถึงได้ผ่านการต่อท้าย URL ที่มีอยู่ด้วยตนเองเท่านั้น แต่อย่างใดแม้ว่าฉันจะเปลี่ยนเป็นบางสิ่งที่ไม่มี `#` ฉันก็ยังไม่สามารถทำให้การเปลี่ยนเส้นทางทำงานได้และฉันไม่สามารถเข้าใจได้ว่าทำไมมันถึงไม่ทำงาน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา