重写htaccess中的条件

时间:2016-08-08 12:28:20

标签: .htaccess magento mod-rewrite

我正在尝试为我的多线程magento网站创建一个站点地图。因此,每个商店视图都有自己的站点地图。因此我做了

站点地图/ store_en / sitemap.xml的

站点地图/ store_de / sitemap.xml的

站点地图/ store_nl / sitemap.xml的

我想要实现的是根据mydomain.nl/sitemap.xml的请求重定向到mydomain.nl/sitemap/store_nl/sitemap.xml

我已经输入了我的htaccess文件。但这并不奏效。谁能看到我做错了什么?

##rewrite rule for de sitemaps

RewriteCond %{HTTP_HOST} ^.*mydomain.nl$
RewriteRule ^sitemap.xml$ /sitemap/store_nl/sitemap.xml [NC]

我有另一个重写规则。我不知道它是否有任何影响......

 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !(.*)/$
 RewriteCond %{REQUEST_URI} !(.*)\.(html|shtml|php)$
 RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]

提前致谢!

1 个答案:

答案 0 :(得分:0)

从上到下读取并处理mod_rewrite的指令。在您的情况下,您在顶部有重定向。此规则匹配(sitemap.xml不是文件或目录,不以斜杠,html,shtml或php结尾)。您向其添加一个额外的斜杠,并重定向请求。

现在有/sitemap.xml/的新请求。第一个规则不匹配(以斜杠结尾),第二个规则不匹配(请求不以xml结尾,而是以xml/结束。您提供404错误。

切换规则时,网址(/sitemap.xml)与第一条规则匹配,并匹配。它现在被重写了。在第二次传递时,第一个规则不匹配,第二个规则不匹配(有效文件)。