我有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/admin或http://www.mydomain.com/admin/any-section(指向根目录下的“admin.php”)
我可以访问http://www.mydomain.com/或http://www.mydomain.com/any-section(指向根目录下的“index.php”)
感谢您的帮助!
答案 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
如果不能解决问题,请描述当前行为和期望,否则很难提供帮助。