Prestashop Nginx +高级搜索4模块+重写规则

时间:2015-09-13 20:22:25

标签: mod-rewrite nginx prestashop

有人可以帮我解决高级搜索4 prestashop模块的重写规则吗?

基本的htaccess规则是:

RewriteRule ^as4_seositemap.xml$ modules/pm_advancedsearch4/sitemap/seositemap.xml [L]
RewriteRule ^as4_seositemap-([0-9]+).xml$ modules/pm_advancedsearch4/sitemap/seositemap-$1.xml [L]

没关系,我做了:

 location = /as4_seositemap.xml {
        rewrite ^(.*)$ /modules/pm_advancedsearch4/sitemap/seositemap.xml break;
    }

    location /as4_seositemap {
        rewrite ^/as4_seositemap-([0-9]+).xml$ /modules/pm_advancedsearch4/sitemap/seositemap-$1.xml break;
    }

但与此部分叠加:

RewriteCond %{QUERY_STRING} !^controller=products-comparison [NC]
RewriteRule ^([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*) index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 [QSA,L]
RewriteCond %{QUERY_STRING} ^isolang=([a-z]{2})&id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*).*p=([0-9]+)$
RewriteRule ^advancedsearch4.php /%1/s/%2/%3?p=%4 [R=301,L]
RewriteCond %{QUERY_STRING} ^isolang=([a-z]{2})&id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*)
RewriteRule ^advancedsearch4.php /%1/s/%2/%3? [R=301,L]
RewriteCond %{QUERY_STRING} ^id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*).*p=([0-9]+)$
RewriteRule ^advancedsearch4.php /s/%1/%2?p=%3 [R=301,L]
RewriteCond %{QUERY_STRING} ^id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*)
RewriteRule ^advancedsearch4.php /s/%1/%2? [R=301,L]

尝试使用http://winginx.com/ru/htaccess执行此类操作:

location ~* ^/([a-z])/?/([0-9])/([a-zA-Z0-9/_-]*)$ {
    rewrite "^/([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 break;

}

if ($query_string ~ "^isolang=([a-z]{2})&id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*).*p=([0-9]+)$"){
    rewrite ^/advancedsearch4.php /%1/%2/%3?p=%4 redirect;
}

if ($query_string ~ "^isolang=([a-z]{2})&id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*)"){
    rewrite ^/advancedsearch4.php /%1/%2/%3? redirect;
}

if ($query_string ~ "^id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*).*p=([0-9]+)$"){
    rewrite ^/advancedsearch4.php /%1/%2?p=%3 redirect;
}

if ($query_string ~ "^id_seo=([0-9]+)&seo_url=([a-zA-Z0-9/_-]*)"){
    rewrite ^/advancedsearch4.php /%1/%2? redirect;
}
}

但我所拥有的只是404的seo url。 请告诉我做错了什么?我读了几本关于nginx重写的书,但是不清楚它是如何工作的。

1 个答案:

答案 0 :(得分:0)

第一个位置解决并运作。

rewrite "^/([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 break;

但仍然不知道如何与他人合作..