2013-03-29 83 views
1

開始我有以下.htaccess代碼:重寫規則匹配的URL不與特定的前綴

RewriteCond %{QUERY_STRING} (^|&)tmpl=(component|system) [NC] 
RewriteRule .* - [L] 
RewriteCond %{QUERY_STRING} (^|&)t(p|emplate|mpl)= [NC] 
RewriteRule .* - [F] 

當我訪問/administrator/index.phpoption=com_component&task=ajax&format=raw&template=something我得到一個403錯誤。

我應該如何重構這些4線滿足第二個條件(阻塞?tp=?template=等的所有URL,但/administrator開始?)

所以/administrator/index.php?option=com_component&task=ajax&format=raw&template=something應該可以訪問,並/index.php?option=com_component&template=something不應該。

+0

什麼是第一條規則的目的是什麼? ,是/index.php?tmpl=系統應該可以訪問 –

+0

是的,它應該。這是Joomla的特點。 – simon

回答

2

您可以在最後一個規則使用負lookahead assertion

RewriteCond %{QUERY_STRING} (^|&)tmpl=(component|system) [NC] 
RewriteRule .* - [L] 
RewriteCond %{QUERY_STRING} (^|&)t(p|emplate|mpl)= [NC] 
RewriteRule ^(?!administrator/).+ - [F] 
+0

謝謝,這很適合我。我使用了'RewriteRule^/(?! administrator /).+ - [F]' – simon