2012-06-13 167 views
1

我想從url中刪除php擴展,但它不適合我。我正在使用Windows 7,與apache2.2.17和php5.3。我現在已經在.htaccess文件如何在url中隱藏php擴展?

OPTIONS -Indexes 
IndexIgnore * 

Options +FollowSymLinks 

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

在httpd.conf中啓用了mod_rewrite在php.ini中配置它作爲

LoadModule rewrite_module modules/mod_rewrite.so 

<Directory "D:/Apache/htdocs"> 
    Options Indexes FollowSymLinks ExecCGI MultiViews 
    AllowOverride all 
    Order allow,deny 
    Allow from all 
</Directory> 

expose_php = On 

做出這些配置後,我仍然無法從我的Windows機器上的url中刪除php擴展,但同樣的事情在ubuntu服務器上工作。

有什麼我在這裏失蹤?

請幫幫我。提前致謝。

回答

2

這可能會回答你的問題:

重寫規則^ /([^ - ] *)$ /$1.php

它爲根目錄下。

重寫規則^目錄/([^ - ] *)$目錄/ $ 1.PHP

也可以編寫腳本自動:

重寫規則^ /([^ - ] )/([^ - ])$ /$1/$2.php

但是,這是 「的httpd.conf」 文件。

其中:([^ - ] *)表示變量; $ 1,$ 2被轉換到可變即

www.verity.com/foo/bar => verity.com/foo/bar.php

+0

它在ubuntu服務器上工作正常,但不能在我的windows機器上運行,是否有一些配置差異? – Sumant

+0

這是在Windows機器上設置的。 我使用的是當前** Windows Server 2008 **,帶有Apache 2.2.22 _no-ssl_ **。請稍候,直到我檢查配置。 **編輯**:只修改了httpd.conf文件。沒有其他的。我會檢查其他的可能性。可能Apache是​​*太老**了。 –

0

使用此來代替:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php 

通過這樣做,你將可以通過example.com/abc打電話給example.com/abc