Điểm:2

Create "shortcut" for GET parameters redirection in Apache2

lá cờ 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
lá cờ nc
Tại sao lại có nhận xét về việc vô hiệu hóa các quy tắc viết lại do vòng lặp chuyển hướng?
capitalg avatar
lá cờ cn
@ user10489 tệp/phần đó được tạo tự động từ certbot
Điểm:0
lá cờ nc

Phần của url sau # không được truyền đến máy chủ web trong GET, vì vậy không có cách nào để biết liệu chuyển hướng đã được thực hiện hay chưa. Điều này sẽ biến thành một chuyển hướng đệ quy mà không có cách nào để phá vỡ vòng lặp.

Nếu bạn muốn làm điều gì đó như thế này, nó cần được thực hiện ở phía máy khách, có thể bằng javascript, nơi có thể truy cập phần neo của URL.

Bạn có thể gửi cho ai đó một liên kết có dấu # trong đó từ ứng dụng phía máy chủ, nhưng điều này sẽ chỉ hữu ích cho các liên kết dẫn đến trang này (bao gồm cả các liên kết trên cùng một trang). Nếu bạn muốn làm điều đó từ cùng một trang, bạn vẫn cần một thứ gì đó phía máy khách để thực hiện điều đó.

capitalg avatar
lá cờ cn
Cảm ơn phản hồi của bạn nhưng câu trả lời SE được liên kết (https://stackoverflow.com/a/8606198/3475778) đã đề cập rằng có thể chuyển hướng đến `#` thông qua chuyển hướng, đó chính xác là điều tôi muốn làm ở đây. Việc chuyển hướng từ phía trên không được đệ quy vì chỉ với phụ lục`*/hq`, bạn sẽ nhận được một chuyển hướng - URL này chỉ được truy cập thông qua nối thêm thủ công vào một URL hiện có. Nhưng bằng cách nào đó, ngay cả khi tôi thay đổi nó thành thứ gì đó không có `#`, tôi vẫn không thể chuyển hướng hoạt động và tôi không thể hiểu tại sao nó không hoạt động.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.