CodeIgniter多应用程序.htaccess问题

时间:2010-08-20 13:53:45

标签: php .htaccess codeigniter

我有CodeIgniter .htaccess文件的问题,希望有人可以帮助我! 我不知道正则表达式或如何使用.htaccess,我对这些东西很新!

我的问题是:

我有这种文件结构(多应用程序):

- application
    - admin
    - site
- system
- index.php
- admin.php

这个.htaccess(在localhost上运行正常!)

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

我想做的是:

使用http://www.mydomain.com/访问我的网站(前端) 我的管理员(后端)为http://www.mydomain.com/admin/

我不知道为什么在我的本地服务器上工作正常。

我希望有人可以帮助我。

UPDATE

我用它来工作:

RewriteEngine on

# If the user types "index.php" or "admin.php".
RewriteCond $1 !^(index\.php|admin\.php|images|robots\.txt)

# If the user types just "admin".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin$ admin\.php [L,QSA]

# If the user enter in any admin section, like "admin/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin\/(.*)$ admin\.php/$1 [L,QSA]

# If the user types any site section, like "site/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index\.php/$1 [L,QSA]

这样我可以访问http://www.mydomain.com/adminhttp://www.mydomain.com/admin/any-section(指向根目录下的“admin.php”)

我可以访问http://www.mydomain.com/http://www.mydomain.com/any-section(指向根目录下的“index.php”)

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

首先,这是多余的:

RewriteCond $1 !^(index\.php|images|robots\.txt)

因为您的其他条件已经处理好现有的文件和目录,所以我建议将其删除。

如果您希望/ admin重写为admin.php,您的重写规则是错误的,使用您当前的规则将导致/index.php/admin。你没有提到这是否是问题,如果是这样的话:

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

您也可以使用RewriteLog调试重写:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog

如果不能解决问题,请描述当前行为和期望,否则很难提供帮助。