2009-10-14 89 views
1

我正在做一個可下載的自託管網絡應用程序(使用笨),並且需要的.htaccess重寫規則,以便能夠知道它是在一個子目錄或不能夠正確制定重寫規則。製作的.htaccess重寫規則,尊重子目錄自動

例如,如果安裝在example.com的應用程序,然後寫入規則看起來像

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

如果,另一方面,它安裝在example.com/subdir,那麼它看起來像

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

我該如何做到這一點?有沒有辦法將這些組合成一個「聰明」的規則?或者,我需要在應用程序安裝過程中以編程方式創建.htaccess文件,而不是將其與下載文件捆綁在一起?

回答

4

只需在您的替換使用相對路徑:

RewriteCond $1 !^index\.php/ 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

是什麼一線做什麼呢? – 2009-10-14 19:32:22

+1

@mcrittenden:該附加條件是排除'的index.php /'被重寫以避免無限遞歸。 – Gumbo 2009-10-14 19:33:42

0

試試這個

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