Nginx VirtualHost,如何将带有?AMP查询参数的Discourse URL重定向到PHP文件?

问题描述

基本上,我的站点https://howtodiscuss.com,其discourse通过Vhost文件中提到的端口通过Docker运行。 (为保护隐私而隐藏了端口)。

我想在主题页面支持AMP,主题页面的Slug类似于

howtodiscuss.com/t/topic-name/123,其中123是主题ID

例如,如果我的原始HTML主题URL是

https://howtodiscuss.com/t/how-to-discuss-salary-in-an-interview/18761

我想通过附加?amp=true&amp=true例如上面的内容,在上述URL的末尾获得此页面的AMP版本,

https://howtodiscuss.com/t/how-to-discuss-salary-in-an-interview/18761?amp=true

OR

https://howtodiscuss.com/t/how-to-discuss-salary-in-an-interview/18761&amp=true

那是我想要的。

因此,由于我无法在discourse中进行任何重定向/路由,因此我必须通过Nginx进行此操作。我的网站目前使用Nginx虚拟主机托管。 (因为此服务器上有多个站点)。

我的主题页面的AMP版本存在于一个PHP文件中,您可以将其命名为index.PHP,我可以将其放在服务器上的该路径上:

index.PHP可以位于此路径/var/www/amp

我的网站文件本身位于

话语文件夹(网站)位于此路径/var/www/discourse

我的网站的Nginx Vhost配置如下:

#htd Server
server {
    listen 443 ssl http2;

    ssl on;
    ssl_certificate         /path/to/cert/site.pem;
    ssl_certificate_key     /path/to/cert/site.key;


    server_name howtodiscuss.com www.howtodiscuss.com;
    location / {
        proxy_ssl_server_name       on;
        proxy_pass       http://localhost:PORT;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;

        # Socket.IO Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;

    } 
}

此Vhost配置文件位于路径/etc/Nginx/sites-available/howtodiscuss.com

现在我需要在Vhost文件添加确切的Nginx重定向代码(以及在哪一行上的确切位置),以便在AMP主题页面上命中请求时,可以命中?amp=true&amp=true

例如,如果请求达到

https://howtodiscuss.com/t/how-to-discuss-salary-in-an-interview/18761?amp=true

然后,它应该为该确切的主题ID提供index.PHP/t/how-to-discuss-salary-in-an-interview/18761PHP代码,因为我使用该主题ID在PHP的AMP页面上填充该帖子ID的内容。我的PHP代码中已经存在此路由逻辑。

因此,可以将AMP放在/amp之类的子文件夹中,或者我可能错了,我们可以在amp.howtodiscuss.com之类的子域中使用吗?我想通过在原始HTML URL的末尾附加查询参数?amp=true来保持AMP路由在根域上,从而避免在子域上维护SEO权限。

https://howtodiscuss.com/amp/t/how-to-discuss-salary-in-an-interview/18761

OR

https://amp.howtodiscuss.com/t/how-to-discuss-salary-in-an-interview/18761

我该如何实现?但是无论在哪里托管AMP都没关系,因为最终用户应始终只在原始HTML页面末尾看到?amp=true即可看到其AMP版本。

我遇到的另一个问题是,如果我现在点击了我网站上的404页面,例如https://howtodiscuss.com/amp(尚不存在),它会将我重定向到托管在同一服务器上的另一个网站,如何停止此重定向

请帮助我提供确切的代码段以及在我的网站的根域(而非子域)上的论述主题页面上放置PHP文件以实现此AMP支持的确切路径。以及如何删除到另一个站点的404重定向(如果它是404路由的话)?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...