HTACCESS强制拥有html扩展名

时间:2014-05-26 00:15:13

标签: regex apache .htaccess mod-rewrite

我更改了我的CMS,现在我的网址没有.html结尾,除了index.html。

我目前的.htaccess

   RewriteRule ^((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$ includes/sitemap.php?datei=$1 [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^. index.php [L]

我正在使用此代码.htaccess删除.html

RedirectMatch 301 (.*)\.html$ http://domain.com$1

修改

我的旧网址如下所示,列出了404错误

http://domain.com/motor/servo.html
http://domain.com/arduino.html

我的新系统SEO会生成不带.html扩展名的网址,而某些主文件的扩展名为.php。

我可以使用什么正则表达式来解决它?

THX

1 个答案:

答案 0 :(得分:2)

您可以将此规则与否定前瞻性正则表达式

一起使用
RedirectMatch 301 ^((?!index)[^.]+)\.html$ http://domain.com/$1

编辑:根据您修改过的问题,您可以拥有此.htaccess:

RewriteEngine On
RewriteCond %{THE_REQUEST} \.html[?\s] [NC]
RewriteRule ^((?!index)[^.]+)\.html$ /$1 [L,NC,R=301]

RewriteRule ^((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$ includes/sitemap.php?datei=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^. index.php [L]