文件扩展名的mod_rewrite会干扰验证文件吗?

时间:2013-03-15 17:51:42

标签: html url mod-rewrite google-apps pinterest

我目前正在使用mod_rewrite从文件中删除.HTML扩展名,以及重定向到其友好版本。

我使用pinterest.htmlgoogle.html文件来验证我的Pinterest页面和Google Apps帐户。

对于mod_rewrite,我使用的是:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

我的问题是它与验证文件相关的逻辑和功能。我理解的目的是通过'x' file提供'y' URL

因此,即使由于重定向和example.com/pinterest.html删除,我将example.com/pinterest作为.HTML投放,也不会有任何干扰,因为文件仍然可以一如既往地读取,对吗?

1 个答案:

答案 0 :(得分:1)

不要重写这两个特殊文件。在cond regexp中添加否定断言:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(?!pinterest\.html|google\.html).*\.html\ HTTP/ 

PS。为什么不匹配%{REQUEST_URI}

RewriteCond %{REQUEST_URI} !(pinterest|google)\.html$
RewriteCond %{REQUEST_URI} \.html$

我用简单的正则表达式重写了这个。这说的与两个特殊文件不匹配,但匹配.html文件的任何其他请求。