2013-10-02 25 views
1

我想刪除應用程序中的多個擴展。刪除.HTACCESS文件中的所有擴展

例如,在一個名爲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] 

我希望延長的最後一點有一些問題。有人可以幫我解決。

回答

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 

+0

這一個完美工作,當我更換的第一行代碼與指定的替代方案。因爲它只是使用第一部分的代碼沒有爲我工作(它引發404錯誤)。 – Bubi

+0

很高興它解決了。 – anubhava

相關問題