htaccess codeigniter


htaccess codeigniter

首先为我糟糕的英语道歉

下面是我对这个问题的背景:我有2个项目使用codeigniter团队创建的1个项目名称项目:client_site另一个由团队b创建的名称项目:server_site

在prod机上的结构目录为:
——www
——应用程序(文件夹)
——系统(文件夹)
-------- . htaccess
-------- server_site(文件夹)
--------------- 应用程序(文件夹)
--------------- 系统(文件夹)
--------------- . htaccess

问题开始今天,突然当管理员无法登录到服务器站点(在上午9点)当管理员提交登录面板时,它说找不到页面(404),突然可以在中午12点再次登录今天晚上17点admin无法再次登录,但客户端网站没有问题,他们仍然可以访问添加/编辑/添加项目,只发生在服务器站点

我不明白为什么,也许我得到了错误的应用程序代码但当我检查控制器和功能时,它已经在那里了Controller home.php with function login()

我的老板说,我的htaccess设置错误了

here my htaccess:

在根站点(client_site):

RewriteEngine on <br/>
RewriteCond %{REQUEST_FILENAME} !-f<br/>
RewriteCond %{REQUEST_FILENAME} !-d<br/>
RewriteCond $1 !^(index'.php|images|font|banners|buttons|css|detik|js|robots'.txt|favicon'.ico)<br/>
RewriteCond $1 !^(index'.php|application/views/|robots'.txt|install|favicon'.ico|documents)
RewriteRule ^(.*)$ /index.php?/$1 [L]<br/>
RewriteCond %{HTTP_HOST} !^www'.(.+)$ [NC]<br/>
RewriteRule ^(.*)$ http://www.client_site.net/ [R=301,L]<br/>

on server_site:

RewriteEngine on <br/>
RewriteCond %{REQUEST_FILENAME} !-f<br/>
RewriteCond %{REQUEST_FILENAME} !-d<br/>
RewriteCond $1 !^(index'.php|images|img|css|js|robots'.txt)<br/>
RewriteCond $1 !^(index'.php|application/views/|robots'.txt|install|favicon'.ico|documents)<br/>
RewriteRule ^(.+)$ index.php?/$1 [L,QSA]<br/>
RewriteCond %{HTTP_HOST} !^www'.<br/>
RewriteRule ^(.*)$ http://www.[%]{HTTP_HOST}/server_site/$1 [R=301,L]<br/>

有人能帮帮我吗?

在服务器端,您有两个问题

RewriteRule ^(.+)$ index.php?/$1 [L,QSA]

这与客户端不同,.+ vs .*, index.php vs /index.php, L,QSA vs L

第二点可能更严重,[%]{HTTP_HOST}将不起作用,因为它没有被替换。您必须使用%{HTTP_HOST}来代替

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/server_site/$1 [R,L]

当一切正常工作时,您可以将R更改为R=301。永远不要在启用301的情况下进行测试,详细信息请参阅此答案。htaccess重写规则的调试技巧