suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Problem mit der Nginx-Umleitung mit Parametern

Nun, ich habe gerade das Schlüsselwort in aaabbb geändert.
Das Folgende bedeutet, dass ich, wenn ich /aaabbb/anime besuche, tatsächlich /ab_anime.php anfordere

location /aaabbb/ {
        rewrite ^/aaabbb/(\w+)$ /ab_.php last;
        rewrite "/aaabbb/(\w+)/(\d{1,2})$" /aaabbb/?id=? permanent;
    }

Dann möchte ich es so gestalten, dass die Parameter beim ersten Klicken angezeigt werden. Gleichzeitig kann ich sie nicht jedes Mal sehen, wenn ich sie aktualisiere wird keine Parameter sein.

Also habe ich überprüft, ob ein Fragezeichen dahinter steht, wenn kein Parameter vorhanden ist, aber ich fand es nutzlos.
Liegt es daran, dass ich selbst 1?id=$2 ausgegeben habe?
Nur die am Ende der Adressleiste hinzugefügten Parameter verschwinden. Es nützte jedoch nichts.

Ich habe das gerade wieder gesehen

    rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址

    rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数

    rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数

Ich weiß nicht einmal, was ich tun soll ... Soll ich noch eins schreiben und $arg verwenden? ? ?

滿天的星座滿天的星座2783 Tage vor903

Antworte allen(1)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-05-16 17:17:56

    我觉得题主把问题复杂化了。
    当然我并不确定我真的理解了题主的需求,试阐述如下:

    1. 用户请求/aaabbb/anime

    2. nginx正确解析为/aaabbb.php?id=anime,返回内容A给用户

    3. 用户的地址栏显示为/aaabbb,并享受内容A

    4. 用户刷新浏览器,定向为/aaabbb,享受/aaabbb.php的内容B。(或者继续阅读内容A)

    这里有一个bug,请求为/aaabbb/anime的时候,地址栏最多变成/aaabbb/anime#xxxxxx,#之前是是不会变得,#之后的是hash。如果想要把地址栏变成/aaabbb,必须有一个redirect的动作。

    我的思路如下:(如果采取了答案,请评论我解决方案里不正确的内容)

    1. nginx 重写策略为 rewrite ^/aaabbb/(\w+)$ /redirect.php?target=$1 last;

    2. redirect.php把target写入session,并返回redirect到/aaabbb上(能且只能通过此方法修改地址栏)

    3. /aaabbb/导航到index.php,读取session里的target,抹掉(或者不抹掉)它,调用对应php文件返回内容。

    4. 刷新/aaabbb时,导航到index.php,同样根据session来响应请求。

    Antwort
    0
  • StornierenAntwort