Добавить путь суффикса URL (для мобильного AMP), не вызывая петли перенаправления в nginx
Я использую веб-сервер nginx для моего сайта WordPress. Я собираюсь сделать это, чтобы стать версией усилителя для мобильной подачи.
я хочу добавить / amp / к моему URL. Я также использую довольно постоянную ссылку для моего текущего URL, так что я могу знать, как я могу переписать свой URL в мобильной версии в / amp /
я использую переписать ^ http://example.com/$ request_uri / amp / break; но когда я работаю в Интернете, это становится этим
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/
основная цель, которую я только хочу добавить / 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;
}
Спасибо
1 ответ
Похоже, у вас есть цикл перенаправления, потому что вы продолжаете добавлять /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;
Вышеуказанное гарантирует, что rewrite
произойдет только в том случае, если ваш URL еще не заканчивается /amp/
(используя косвенные утверждения PCRE, библиотеки NGINX, используемой для поддержки регулярных выражений); Кроме того, следует также позаботиться о двойном //
которые появлялись в вашей схеме изначально.