htaccess重定向到xml文件而不是php

时间:2015-02-23 02:54:58

标签: .htaccess sitemap

我有以下htaccess:

RewriteEngine On
RewriteBase /

RewriteRule ^([A-Za-z0-9]+)\.html$ /$1 [R=301,L,NE]

RewriteCond %{THE_REQUEST} \s/+index\.php\?s=([^\s&]+) [NC]
RewriteRule ^ %1? [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+?)/?$ index.php?s=$1 [L,QSA]

这会将我的所有查询(例如mysite.com/index.php?s=example)更改为mysite.com/example。多数民众赞成在那里。我的站点地图页面出现问题。当您输入此地址mysite.com/sitemap而不是将您重定向到mysite.com/index.php?s=sitemap时,它会显示我的sitemap.xml文件,该文件位于我的目录root中。

如何阻止这种情况发生?

谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎需要在此处停用MultiViews。选项MultiViewsApache's content negotiation module使用,> mod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/sitemap可以在网址中,但它会投放/sitemap.xml

Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^([A-Za-z0-9]+)\.html$ /$1 [R=301,L,NE]

RewriteCond %{THE_REQUEST} \s/+index\.php\?s=([^\s&]+) [NC]
RewriteRule ^ %1? [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+?)/?$ index.php?s=$1 [L,QSA]