Apache rewritecsecond -工作在本地,而不是在主机上



我有一个。htaccess重写条件/规则,它在我的本地工作良好,这是OSX mavericks,运行apache apache/2.2.26,但当我部署到我的生产服务器,它不再工作,运行apache/2.2.22 (Debian)。

这是条件:

RewriteCond %{REQUEST_URI} ^([a-z]{2})/sitemap.xml$
RewriteRule ^([a-z]{2})/sitemap.xml /sitemaps/$1_sitemap.xml [NC,L]

正如您所看到的,我在基本目录中有一个站点地图目录,这是一个多语言站点,我为每种语言都有一个站点地图。然而,我不能简单地为每个请求创建一个像/en/sitemap.xml这样的目录,因为这会影响框架处理请求的方式,因为apache试图服务该目录,而不是将其传递给要处理的索引文件。

所以我创建了这个重写条件,它应该重写请求/en/sitemap.xml/sitemaps/en_sitemap.xml,如前所述,这在本地工作得很好,但不是在我的Debian服务器上,它从不匹配请求中的正则表达式,它只是移动到下一个,并将请求传递给index.php文件。这是错误的!

任何建议/帮助将是伟大的,我找不到任何apache文档中提到的mod_rewrite在这两个版本,可能是不同的

谢谢

这是因为%{REQUEST_URI}值总是以斜杠开头。
此外,你的条件是无用的,因为你的RewriteRule做同样的。

这段代码应该在两边都能正常工作

RewriteRule ^([a-z]{2})/sitemap.xml$ /sitemaps/$1_sitemap.xml [L]

最新更新