phalcon的路由大小写敏感的问题

快乐无极 , 2015/02/13 10:27 , 开发文档 » PHP , 评论(0) , 阅读(5555) , Via 本站原创 | |
最近在部署一个phalcon开发的网站的时候发现了一个怪像,原来在本地linux下,phalcon控制器与方法不区分大小写,但是到了实际网站中却发现,却又区分大小写。比如访问 /index/test 正常,但访问 /Index/test 或者 /index/Test 均不正常,这让人困惑不已。经检查两地配置,nginx/php配置均为相同。唯一区分是本地Linux环境为Centos 32位版本,实际服务器上为64位版本,难道phalon的32位代码与64位代码有所区分?
去翻看了phalcon论坛,有的人也提出了这个问题,然后作者是给出了答案:
http://forum.phalconphp.com/discussion/1824/case-insesitive-routing-how-to-

一、解决方法一(推荐方法)
在入口的index.php最前面适当处加入:

if (isset($_GET['_url'])) {
     $_GET['_url'] = strtolower($_GET['_url']);
}


二、解决方法二 仅适用apache

httpd.conf - add RewriteMap and enable proxy.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
...

<VirtualHost *:8188>
DocumentRoot "C:/Eclipse 4 Workspace/phalcon/html/www/"
php_admin_flag engine On
RewriteMap lowercase int:tolower
    ProxyRequests On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?_url=/${lowercase:$1} [QSA,L,P]
</IfModule>


不管怎么说,我觉得是phalcon源码中有些许问题导致这个不一致。现在的版本是在1.3.4,随着phalcon 2.0即将发布,相信这些小毛病能够去除。
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]