0

我试图弄清楚如何在 apache 前面使用 nginx 重写 url。我对这样的设置很陌生,经过广泛的研究,我无法弄清楚。

我正在尝试在 prestashop 1.6.0.6 安装中启用 seo 友好的 url,但没有任何运气。事实是,当只使用 apache 作为 Web 服务器时,这真的很简单。

如果有人可以帮助我,我将不胜感激。

4

1 回答 1

1

这是否有效取决于您的 Apache 服务器如何配置为接受 URL。如果 Apache 配置为,如您在.htacess文件中提到的那样,在主机名的根目录处提供服务,则可能不需要重写。一个像这样的示例 Nginx 服务器块:

server {
    server_name nginx.example.org;
    location / {
        proxy_set_header Host $host;
        proxy_pass http://apache.example.org:80 break;
    }
}

将从 Nginx 访问的确切主机和路径传递给 Apache,无需任何更改。但是,您的本地配置需要更改server_nameand指令。proxy_pass在这种情况下,由于使用location / {},所有路径都被接受和代理。

只要后端 Apache 配置正确并且可以从 Nginx 访问,这应该可以工作。最好的测试是确保您可以首先直接访问 Apache 上的资源,尤其是那些具有对 SEO 友好的 URL 的资源,这表明该.htaccess文件正在工作并生效。然后按照上面配置前面的Nginx。

至于可能只使用 Nginx,您可以将规则从.htaccessover 移植到rewriteNginx 配置中的指令中。根据我的经验,这些规则在功能和结构上非常相似:

Apache:   RewriteRule ^/(.*\.jpg)$ /images/$1 [L] 
Nginx:    rewrite ^/(.*\.jpg)$ /images/$1 last;

更多信息在Nginx wiki上。

于 2014-04-16T13:45:09.503 回答