2012-09-24 78 views
1

問完這個問題後Htaccess URLRewrite to another map 這很好,但現在我想添加一個額外的'地圖',但這並不奏效。Htaccess重寫規則

我現在.htaccess文件:

ErrorDocument 404 /v2/404.php 
ErrorDocument 404 /v2/505.php 

RewriteEngine on 

RewriteRule ^error/([^/]+)/?$ error.php?id=$1 [L,QSA,NC] 

RewriteRule ^email/([^/]+)/?$ email.php?id=$1 [L,QSA,NC] 

RewriteRule ^activate/([^/]+)/?$ activate.php?code=$1 [L,QSA,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^werknemer/([^/]+)/?$ werknemer/$1.php [L,QSA,NC] 

RewriteRule ^klanten/([^/]+)/?$ klanten/$1.php [L,QSA,NC] 

RewriteCond %{REQUEST_FILENAME}.php -f 

RewriteRule ^(.*)$ $1.php [L] 

總是最後無法正常工作,現在重寫規則^ klanten /不工作,當我做重寫規則^ werknemer /後重寫規則^ klanten /,重寫規則^ klanten /作品,但重寫規則^ werknemer /不。

如何解決這個問題?

謝謝! Wouter0100

回答

3

您需要再次複製2個條件。 RewriteCond的僅適用於緊隨其後的RewriteRule,所以你需要複製的條件,如果他們被應用到多個規則:

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

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

也許你需要爲你的最後一條規則,以及:

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

檢查是否存在尾部斜槓,並在查看是否將php添加到最後產生現有文件之前將其刪除。

+0

謝謝,效果很好!都。 – Wouter0100