magento 使用 nginx 将视图存储在子文件夹下

magento 使用 nginx 将视图存储在子文件夹下

有人可以解释一下如何让 nginx 在其自己的子文件夹下识别 magento 中的商店视图吗?

我有一家商店..我的 nginx 配置文件中有以下代码。

location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            include /etc/nginx/fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param MAGE_RUN_CODE edu_default;
            fastcgi_param MAGE_RUN_TYPE store;
            fastcgi_connect_timeout 60;
            fastcgi_send_timeout 180;
            fastcgi_read_timeout 180;
            fastcgi_buffer_size 256k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
            fastcgi_intercept_errors on;
            fastcgi_param SCRIPT_FILENAME /home/domain here/public_html$fastcgi_script_name;
    }

我的所有 magento 文件都位于根文件夹中:/home/domain here/public_html

现在我有一个可以通过子文件夹 /substore/ 访问的商店视图

但我希望它从根文件夹 magento index.php 文件运行。但所有链接的 URL 中仍然有子文件夹。

实际的 magento 商店视图配置设置正确。因此,基本 URL 和基本链接 URL 是带有子文件夹的 URL。

所有静态内容仍然从根域加载,无需子文件夹。

现在我一直在尝试为它创建一个新的位置 {} 块,但似乎无法让它工作

我知道 syslink 方法但想尝试不那样做。

实际上我只需要找出如何在传递 MAGE_RUN_CODE 的同时让所有 /subfolder/index.php url 重写为 magento 中的根 index.php 文件

我刚刚尝试了上述位置块。该网址现在似乎可以正常工作,但我在 magento 中收到 404 页面。因此一定没有正确传递“显示哪个页面”值

location ~ /subfolder/.+\.php$ {
            root /home/domainhere/public_html;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            include /etc/nginx/fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param MAGE_RUN_CODE storeviewcodehere;
            fastcgi_param MAGE_RUN_TYPE store;
            fastcgi_connect_timeout 60;
            fastcgi_send_timeout 180;
            fastcgi_read_timeout 180;
            fastcgi_buffer_size 256k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
            fastcgi_intercept_errors on;
            fastcgi_param SCRIPT_FILENAME /home/domainhere/public_html$fastcgi_script_name;

更新.1 好的所以我发现我需要使用该部分...

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

但这会导致顶级商店无法正常运作,因为所有内容都变成了子商店视图。

所以我需要重写规则

rewrite / /index.php;

rewrite / /subfolder/index.php;

有人知道正确的方法吗?

答案1

我已经多次看到过这种情况,为什么要将多个商店保存在单独的子文件夹中,这不是子域名的工作吗?

正确的方法是保持您的商店原样,并使用下拉菜单选择您的商店视图,然后更改基本网址......

然后在 nginx 中你可能需要使用map配置,

map $request_uri $mage_code {
default                     edu_default;
~^/my_other_shop/           edu_special;
}

map $request_uri $mage_type {
default                     edu_default;
~^/my_other_shop/           store;
}

事实上我以前从来没有尝试过:)

相关内容