先说说情况:
1、开启ecstore伪静态的两个步骤:
(1)在nginx里server部分添加:location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
(2)修改程序的config.php文件,把下面这行define('WITH_REWRITE',false);
改成define('WITH_REWRITE',true);
开启后,网址里的index.php就没有了,比如http://www.hnqss.cn/index.php/product-75.html就变成了:http://www.hnqss.cn/product-75.html ,url友好多了。
2、会出现什么问题?
登陆后台后,通过这个地址:http://www.hnqss.com/index.php/shopadmin 登陆后台成功后,会跳转到 http://www.hnqss.cn/shopadmin/ 这个地址,但这个地址是不存在的,所以就提示:
测试环境下这样无所谓,但在给客户布署交付时,就会出现如下提示:
因为商派限制了必须通过 http://www.hnqss.cn/index.php/shopadmin这样的地址访问后台,否则授权就失败(很变态的限制呀)。
3、如何解决这个bug?
我的这个办法也有点变态(^o^),既然提示找不到http://www.hnqss.cn/shopadmin,那我就在根目录下建一个shopadmin目录,然后往里面放一个index.php文件,文件内容如下:
< ? php
//重定向浏览器
header("Location:http://www.hnqss.cn/index.php/shopadmin/index.php");
//确保重定向后,后续代码不会被执行
exit;
? >
懂代码的一看就明白了,它实际不过是一个地址跳转而以,把地址再跳转回正确的地址上去。
===========================================================================================================
以上都是浮云,最完美的解决办法来了:
在nginx中使用下面这个规则,啥问题都浮云了,让那些看文章只看一半的人去折腾去吧,哈哈~_~ 。
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
index index.php index.htm index.html;
}
location ~ ^/shopadmin {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}