sitemap是為了方便搜索引擎蜘蛛爬取而生成的xml文件。
配置文件為:@console/config/fecshop_local_services/Sitemap.php
,您可以通過配置的方式
對該配置文件進行重寫。
return [
'sitemap' => [
'class' => 'fecshop\services\Sitemap',
'sitemapConfig' => [
/**
* 對于下面的設置,您可能感覺很啰嗦,域名作為store的key,在store service中已經(jīng)設置,
* 為什么需要在這里重新搞一套呢? 這樣做是為了更加的靈活
*
*/
# appfront入口
'appfront' => [
# store的key(域名),
'fecshop.appfront.fancyecommerce.com' => [
'https' => true, # false代表使用http,true代表使用https
'sitemapDir' => '@appfront/web/sitemap.xml', # sitemap存放的地址
'showScriptName'=> false, # 是否顯示index.php ,譬如http://www.fecshop.com/index.php/xxxxxx,當nginx沒有設置重寫,這里需要設置為true,這樣url中會存在index.php,否則會404
# 這個設置對seo來說,設置為false最合適,也就是隱藏 url中index.php ,這種設置需要開啟nginx的url重寫
],
# store的key(域名)
'fecshop.appfront.fancyecommerce.com/fr' => [
'https' => true, # false代表使用http,true代表使用https
'sitemapDir' => '@appfront/web/fr/sitemap.xml', # sitemap存放的地址
'showScriptName'=> false,
],
'fecshop.appfront.es.fancyecommerce.com' => [
'https' => true, # false代表使用http,true代表使用https
'sitemapDir' => '@appfront/web/sitemap_es.xml',
'showScriptName'=> false,
],
'fecshop.appfront.fancyecommerce.com/cn' => [
'https' => true, # false代表使用http,true代表使用https
'sitemapDir' => '@appfront/web/cn/sitemap.xml',
'showScriptName'=> false,
],
]
],
],
];
如果您的nginx重寫沒有開啟,那么showScriptName需要設置成true,原因參看上面
配置里面的說明。
上面配置了4個store,(
fecshop.appfront.fancyecommerce.com
)
里面的各個配置項,在配置后面都有說明。
1.上面的store,就是您在各個入口下面的store,每一個store用不同的 域名或者后綴作為首頁url,您可以這是pc入口,以及手機web入口,因為他們的 首頁url不同,語言不同,進而內(nèi)容不同,因此他們都需要有自己的sitemap文件。 每一個store配置里面都有sitemap的文件路徑地址。
2.生成了sitemap.xml,我們需要通過首頁域名+sitemap.xml作為訪問路徑。
如果在地址下面直接有對應名字的文件,則可以直接訪問,但是名字是其他的名字,就需要nginx
設置了。譬如
fecshop.appfront.es.fancyecommerce.com
生成的sitemap文件名字為
sitemap_es.xml,我們需要設置一下,讓url
fecshop.appfront.es.fancyecommerce.com/sitemap.xml可以訪問
到sitemap_es.xml
location ~ /sitemap.xml
{
if ($host ~ .*appfront.es.fancyecommerce.com) {
rewrite ^/sitemap\.xml /sitemap_es.xml last;
}
}
可以參看我的nginx的配置如下:
server {
listen 80 ;
server_name fecshop.appfront.fancyecommerce.com fecshop.appfront.es.fancyecommerce.com;
root /www/web/develop/fecshop/appfront/web;
server_tokens off;
include none.conf;
index index.php index.html index.htm;
access_log /www/web_logs/access.log wwwlogs;
error_log /www/web_logs/error.log notice;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ /sitemap.xml
{
if ($host ~ .*appfront.es.fancyecommerce.com) {
rewrite ^/sitemap\.xml /sitemap_es.xml last;
}
}
location /fr/ {
index index.php;
if (!-e $request_filename){
rewrite . /fr/index.php last;
}
}
location /es/ {
index index.php;
if (!-e $request_filename){
rewrite . /es/index.php last;
}
}
location /cn/ {
index index.php;
if (!-e $request_filename){
rewrite . /cn/index.php last;
}
}
location /de/ {
index index.php;
if (!-e $request_filename){
rewrite . /de/index.php last;
}
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
}
通過上面的nginx配置
location ~ /sitemap.xml
{
if ($host ~ .*appfront.es.fancyecommerce.com) {
rewrite ^/sitemap\.xml /sitemap_es.xml last;
}
}
fecshop.appfront.es.fancyecommerce.com/sitemap.xml 訪問的文件 不是 /www/web/develop/fecshop/appfront/web/sitemap.xml 而是 /www/web/develop/fecshop/appfront/web/sitemap_es.xml 文件。
對于訪問url中路徑和名字與實際文件一致的,不需要在nginx做更改配置。
3.生成xml
通過上面,我們配置好了各個store的參數(shù),我們就可以生成sitemap文件了
執(zhí)行的shell文件為:@fecshop/shell/sitemapGeneral.sh
執(zhí)行完了,就會在配置相應的地方生成對應的sitemap文件。
更多建議: