Magento 子文件夹多商店的 Nginx 配置

Magento 子文件夹多商店的 Nginx 配置

我正在从子域名移动到子文件夹。

我有多个国家/地区的多个子文件夹。我在 Magento 管理中更改了域名。但 Nginx 重写似乎不起作用。我的服务器上安装了 1 个 Magento,我想使用 /uk 和 /us。

页面正在加载,但所有页面都出现 404 错误。

我在 Google 上花了很多时间,但找不到可行的配置。希望有人能提供一些线索。

这是我的配置:

server {
listen 443 ssl http2;   
root /home/domain_com/public_html/;
server_name www.domain.com/uk;
if ($http_host = cache.domain.com) {
rewrite  (.*)  https://www.domain.com$1 permanent;
}
if ($http_host = uk.domain.com) {
rewrite  (.*)  https://www.domain.com/uk$1 permanent;
}
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location /downloader/ {
allow xx.xx.xx.xx;
deny all;
}
location ~ ^/(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
location /var/export/ { internal; }
location /. { return 404; }
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ $1 last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
fastcgi_pass domain;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_param MAGE_RUN_CODE ic_uk;
fastcgi_param MAGE_RUN_TYPE website;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_read_timeout 60;
include /etc/nginx/fastcgi_params;
    }
}

答案1

你的配置有很多问题。我不知道你在哪里发现的,但我建议你不要再去那里了。

第一的:

location /. { return 404; }

它将匹配除主页之外的所有内容。一开始并不清楚你为什么要这样做。

第二:

server_name www.domain.com/uk;

这显然是无效的,因为/不能出现在主机名中。将其更改为适当的

第三:

location @handler { rewrite / /index.php; }

您从 发送了所有非静态资源try_files,但重写仅匹配 URL 路径/。因此,您应该再次预期从除主页之外的所有内容获得 404 错误。只需将其更改为 即可轻松修复此问题^,这将匹配所有内容。

还不清楚为什么不直接从这里传递给 FastCGI location。其余的都是多余的。


在我看来,这些只是显而易见的问题,它们会完全阻止配置工作。这里还有很多其他不好的做法(例如 的不当使用if),您也应该稍后清理它们。

相关内容