删除.HTACCESS文件中的所有扩展名

时间:2013-10-02 18:30:24

标签: .htaccess mod-rewrite url-rewriting

我想删除应用程序中的多个扩展程序。

例如,在名为directory的目录中,我有这些文件

  • samplehtml.html
  • samplephp.php
  • sample.pl

我想访问这些没有扩展名的文件,比如

  • example.com/samplehtml
  • example.com/samplephp
  • example.com/sample

我找到了这段代码,用于删除单个扩展名。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.cgi [NC,L]

当我尝试使用此代码添加更多扩展时,只有第一个扩展才能正常工作。我将上面的内容扩展为

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.cgi [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteRule ^([^\.]+)$ $1.php [NC,L]

我希望延长的最后一点有一些问题。有人可以帮我解决。

1 个答案:

答案 0 :(得分:4)

RewriteCond仅适用于下一个RewriteRule。你可以有3条规则:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.cgi -f       
RewriteRule ^(.+?)/?$ /$1.cgi [L]

备选方案:您可以使用以下Options来避免所有上述规则:

Options +FollowSymLinks +MultiViews