2009-10-14 110 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]