重写条件以匹配任何文件扩展名

时间:2013-08-17 22:22:44

标签: apache .htaccess

我有以下htaccess规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

这样做是在我的所有网址上插入一个斜杠字符,即:

http://localhost/advertising变为http://localhost/advertising/

现在我有一些网址,例如:http://localhost/contact.html

但我的htaccess规则也是对这些网址应用斜杠 - 因此上述网址变为http://localhost/contact.html/

现在我添加了以下条件来防止这种情况发生:

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

但我希望比这更聪明一点 - 我想要一个与用户输入的任何扩展名相匹配的表达式。我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:1)

这将重写所有目录而不会斜杠!

RewriteCond %{REQUEST_FILENAME}  !-f
RewriteCond %{REQUEST_URI}  !(.*)(\..{3,5}|/)$
RewriteRule ^(.*)$   $1/ [L,R=301]