我正在使用nginx web服务器为我的wordpress网站。 我将使它成为移动服务的放大版本。
我想添加/放大/我的url。 我也使用漂亮的固定链接为我目前的url,所以我可以知道如何重写我的url在手机版/放大器/
我正在使用重写^ http://example.com $ request_uri / amp / break; 但是当我服务networking时,它变成了这个
exmaple.com/homepage//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp/
我希望当iphone服务的网页,链接将是http://exmaple.com/homepage/amp/
主要目的我只想添加/放大/网站的任何链接。
这是我的nginx.conf
server { listen 80; server_name example.com; charset utf-8; access_log logs/xxx.access.log; root /var/www/html; index index.php; location / { try_files $uri $uri/ /index.php?q=$uri; } location /en { try_files $uri $uri/ /en/index.php?q=$uri; } location /my { try_files $uri $uri/ /my/index.php?q=$uri; } set $mobile_rewrite do_not_perform; if ($http_user_agent ~* " (android|bb\d+|meego).+mobile|ip(hone|od) { set $mobile_rewrite perform; } ## redirect to AMP ## if ($mobile_rewrite = perform) { rewrite ^ http://example.com$request_uri/amp/ break; break; }
谢谢
这听起来像你有一个redirect循环,因为你继续添加/amp/在你的请求URL的末尾。
也许你应该有一个条件重写指令(或两个!),而不是通配符。
-rewrite ^ http://example.com$request_uri/amp/ break; +rewrite ^(.*(?<!/amp))/$ http://example.com$1/amp/ break; +rewrite ^.*(?<!/amp/)$ http://example.com$uri/amp/ break;
以上内容确保只有当你的URL还没有以/amp/结尾(使用PCRE的后向断言 ,这是NGINX用来支持正则expression式的库)时才会发生rewrite 。 另外,它也应该照顾你原来出现在你的scheme中的双重// 。