htaccess重定向.htm到.html如果前者不存在而后者不存在.html

时间:2015-08-25 18:08:31

标签: .htaccess mod-rewrite redirect

我想设置这些重定向:

  • file - > file.html
  • file.htm - > file.html
  • file.php - > file.html

然而,只有前者不存在而后者不存在时才会发生这些重定向。这是我到目前为止所拥有的。

RewriteEngine On
RewriteCond %{REQUEST_URI} \.htm$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_TARGET_URL} -f # <----------- how to do this?
RewriteRule ^(.*)\.htm$ $1.html [L,R]

我想使用clean urls。然而在此期间,我正在切换到not yet support that的Jekyll。当Jekyll得到这种支持时,我将再次向另一个方向重定向。

1 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC]
RewriteRule ^(.+?)(?:\.(?:htm|php))?$ /$1.html [L,NC,R=302]
在执行%{DOCUMENT_ROOT}/$1\.html之前,

.html将确保存在相应的RewriteRule文件。