制作.htaccess重写规则会自动尊重子目录

时间:2009-10-14 18:44:16

标签: php .htaccess codeigniter

我正在制作一个可下载的自托管网络应用程序(使用CodeIgniter),并且需要.htaccess重写规则才能判断它是否在子目录中,或者无法正确制作重写规则。

例如,如果在example.com上安装了应用程序,则写入规则将类似于

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

另一方面,如果它安装在example.com/subdir上,那么它看起来像

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

我怎样才能实现这一目标?有没有办法将这些组合成一个“智能”规则?或者我是否需要在应用程序安装期间以编程方式创建.htaccess,而不是仅将其与下载捆绑在一起?

2 个答案:

答案 0 :(得分:4)

只需在替换中使用相对路径:

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

答案 1 :(得分:0)

试试这个

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