我目前正在使用mod_rewrite
从文件中删除.HTML
扩展名,以及重定向到其友好版本。
我使用pinterest.html
和google.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
投放,也不会有任何干扰,因为文件仍然可以一如既往地读取,对吗?
答案 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
文件的任何其他请求。