2

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

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

  • 示例html.html
  • 示例php.php
  • 样本.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]

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

4

1 回答 1

6

YesRewriteCond仅适用于非常下一个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

于 2013-10-02T18:42:13.537 回答