【问题标题】:Rewrite conditions in htaccess在 htaccess 中重写条件
【发布时间】:2016-12-14 05:32:12
【问题描述】:

我正在尝试为我的多商店 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]

提前致谢!

【问题讨论】:

  • 这条规则乍一看还不错。您是否完全启用了对 .htaccess 样式文件的解释并且文件位置正确?下一步是启用重写日志记录并检查重写引擎中的详细步骤。这通常会指出问题所在。
  • 他感谢您的帮助!该文件正在工作,因为另一个(最后一个)重写规则工作正常。如何启用重写日志记录?我对这个不是很熟悉...
  • 对于此类问题,您必须首先始终查看官方文档。您无法在没有查阅您使用的工具和实用程序的文档的情况下编写代码! httpd.apache.org/docs/current/mod/mod_rewrite.html
  • 嘿,我已经解决了这个问题。我已经改变了第一个和第二个重写规则的顺序。因此,地图的重写规则首先出现,然后用“/”重写 url 的规则。这有点奇怪,我实际上想了解为什么会发生这种情况,因为现在我不......
  • 如前所述:找出正在发生的事情的方法,为什么在你的重写引擎内部是重写日志记录。

标签: .htaccess magento mod-rewrite


【解决方案1】:

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

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

切换规则时,url (/sitemap.xml) 与第一条规则匹配,并匹配。现在改写了。在第二遍时,第一条规则不匹配,第二条规则不匹配(有效文件)。

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多