nginx重定向带参数的问题
滿天的星座
滿天的星座 2017-05-16 17:15:56
0
1
831

嗯,我只把关键字换成aaabbb了。
下面这个意思是我访问 /aaabbb/anime 实际上是请求的/ab_anime.php

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

然后我想弄个第一次点进去就带参数,同时地址栏上不能看到,然后每次刷新的话就没参数。

所以查了下不带参数是后面加问号,但发现没用。
是不是因为我自己拼了$1?id=$2这个的缘故。
只是在地址栏给后面加的参数会不见。然而并没有什么卵用。

刚才又看到了这个

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

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

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

我都不知道怎么办了……难道是要再写一条然后用$arg???

滿天的星座
滿天的星座

全部回复(1)
習慣沉默

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

  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= last;

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!