2013-03-25 126 views
0

假設我有一個頁面testpage.php,我想通過localhost/testpage訪問它。我無法弄清楚正則表達式來實現它。PHP正則表達式.htaccess

當我使用下面,我得到了一個服務器錯誤

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* "^[^0-9][A-z0-9_]+*.php"/$0 

然而,當我指定它工作的確切文件。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* testpage.php/$0 

回答

3

試試這個:

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

第三行檢查文件做重寫,以避免錯誤

+0

已解決,謝謝! – user1104854 2013-03-25 13:24:31

1
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php$ 
RewriteRule ^(.*)$ $1.php [L] 

之前確實存在這將改寫該文件以.PHP extention

1

您不能在替換模式中指定正則表達式。這就是它失敗的原因。 在這一行

RewriteRule .* "^[^0-9][A-z0-9_]+*.php"/$0 

你告訴阿帕奇重寫任何東西(.*)字面"^[^0-9][A-z0-9_]+*.php"/,加上零匹配的字符串(這是一個錯誤,無論如何,因爲比賽從$ 1開始,再有就是$ 2,以此類推)。

如果你想捕捉的比賽,你必須用括號括起來,像

(.*) 

,然後它會替換字符串作爲$1可用。

+0

+1解釋OP的問題 – Umbrella 2013-03-25 13:30:19

+0

@傘謝謝:) – 2013-03-25 13:44:00