Joomla使用Nginx作Web服务时, 连接重写时含有index.php解决方案

 

如果你使用joomla, 使用的是nginx作为web 服务的话, 你可能会面临和我们一样的问题,只能访问首页,访问其他页面出现404错误,而且, 在URL连接里会出现index.php。 如果之前我们用apache的时候, 只要开启mod_rewrite, 然后把htaccess.txt 改成.htaccess就能正常使用了, 但是在nginx下, 该怎么配置尼?

我google了很多,看了官网上的说明和帮助,都没有效, 最终发现一个有效的方法。 请按照下面一样设置站点的配置文件:

server {

        listen 80;
        server_name example.com;
        root /var/www/example/public_html;
        index  index.php index.html index.htm default.html default.htm;

        access_log /var/log/nginx/accn_access.log;
        error_log /var/log/nginx/accn_error.log;

        ##
        # JOOMLA SEF
        ##

        location / {
              try_files   $uri $uri/ /index.php?q=$request_uri&$args;
        }

        ##
        # PHP scripts to FastCGI 
        ##
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;

            fastcgi_pass   unix:/var/run/php5-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;

        }

}

这个有效的重点在于, 这一行:

try_files $uri $uri/ /index.php?q=$request_uri;

意思把URI当做一个参数q传给了index.php, 这个joomla的入口文件,然后估计joomla内部有机制实现转换。

 

如果有joomla的商业合作,请联系我i#mengxi.me

与其更好,不如不同

最近接触了几个千万级别融资的企业老总,天使投资这事大多数人都是不会遇到了,所以我在这边也就不展开讲。但是有些案例,讲出来,还是能够对大家有一定的启发性的。我之前读过一本书,Peter Thiel写的《从0到1》,我当时读完之后,只是有个概念在脑子里。并没有什么特别深的感触,不过现在,我逐渐接触到了一些项目,慢慢地开始认同这种观点。和AUN防臭袜(自行百度)品牌创始人兼总经理吴家淡先生泡茶的时候,他聊起自己的创业经历,AUN旗舰店于2013年10月份开始营业,2014年的业绩预计在1000万左右,其中天猫京东800万左右,线下200多万。在电商袜子这个品类中,AUN的客单价基本是最高的——目前大部分的袜子品牌,还处于低价竞争的情况,而AUN将客单价维持在了140元左右。他当时问我,生意从哪里来,我说,生意从市场中来,他笑笑,说,生意从竞争对手那里来。市场这块蛋糕就是那么大,你占得多,别人就占得少,你占得少,别人就占得多。比如饮料市场就那么大,王老吉的崛起,肯定伴随着其他饮料的市场份额降低。所以我们就得细分出一个市场,找到一个可以成为第一的市场。他给我举了一个例子,世界上有些小国家和中国某些城镇的面积差不多大,但是,一个小国的国王,和中国一个镇长,可支配的资源差得太多。第一有一个光环效应,可以有很多好处,有了第一,供应商愿意跟你合作,渠道商也愿意跟你合作,我想起了我老妈从小教我的一句话,越有钱,就越省钱。听到这里,我有点好奇了,那么我怎么才能找到这么一个没人关注的领域呢。他给我讲了几点,首先,要分析整个外部环境,明确竞争对手的优缺点,给顾客一个选择自己而不选择竞争对手的理由,同时避免接触竞争对手在顾客心智中强势的那一部分。他举了两个例子,一个是可口可乐和百事可乐的, 百事可乐就跟可口可乐比年轻,宣传中就一直说可口可乐是父亲那一辈人喝的,百事是年轻人喝的,同时还一直请年轻的明星代言,巩固自己代表年轻、活力的形象。另一个例子是关于宝马和奔驰的,当时宝马想进军豪车市场的时候,市场中已经有奔驰了,奔驰的口号是坐得最舒服的豪车,这个时候,坐得舒服,就是奔驰在消费者心中一个强势的形象,如果这时候,宝马说,宝马是比奔驰更舒服的豪车,效果和说服力都会很一般,所以宝马的定位就是最好开的豪车,成功地切入了市场。于是就有了现在的坐奔驰,开宝马之说。我也补充了一个例子,魅族跟小米的,魅族开始针对小米做营销的时候,就不谈发烧,而谈极致、梦想。等等,这样的例子,仔细想,其实是有很多的。更多的时候,还是需要我们对市场的理解和洞察。最后他跟我说,你不要总想着在同质化的领域做得比别人更好,那是成功学灌给你的鸡汤,教你只要努力就能成功,其实差异化竞争才是这个社会的立足之道。你在一个细分领域做成第一之后,哪怕是巨头都很难超越你,因为他们的盘子太大,没有办法把力量集中到你这一个点。对他们来说,最好的办法,可能就是把你收购了,有时候,这可能是双方都想要的结果。我似乎听懂了一些,拜别了吴总之后,我总结了一下,也就是我今天的主题:与其更好,不如不同。分享给大家,谢谢。

转自知乎

编辑于 2015-10-31

专注你的梦想,绝不跟自己说不

Today is the day for focus, dreams and perseverance. Think about where u want to go, who you want to be. Set goals and walk one step in front of the other. NEVER for one second let yourself think it’s not gonna happen. It might not happen exactly as you plan or wish but it IS going to happen! Go make it, create it, live it, breathe it, BE it!! Walk light!

 

 

https://plus.google.com/+AliciaKeys/posts/WEDUaDQJ1TF

Joomla中的Task 和view 深入学习

 

622762d0f703918f057e8039503d269758eec492

Joomla 是一个优秀的CMS系统,她可以让你快速的完成一个网站的建设,她提供组件,模块,模板能够满足你大部分的网站需求。而组件在其中举足轻重。

一、基本知识

组件(component ) 用于显示页面的主要数据。Joomla的组件采用的是MVC架构设计。 在一个页面请求产生时,其URL中可能包括task, view, layout等信息。我在这里就是要讨论这个task和view. 一般URL中如果含有task就不会含有view, 这里因为joomla认为task就完成一个特定的任务,比如说数据库操作,有效性验证等, 而view是负责显示数据。通常的设计是task里完成任务处理后,会调用setRedirect方法引导向一个view来显示数据。其实在joomla里,如果URL中没有指定task的话,会默认task为display。

二、问题

在项目中,需要在页面的meta数据里包含Open graphic protocol 数据。Open graphic protocol 用于给社交网络提供要分享的数据描述。 如果你的页面是通过task来完成的,然后 在task里通过setRedirect根据数据跳转到不同的view进行授权验证, 然后验证通过后显示数据页面的话,你可能会遇到这种问题:你需要分享这个页面,你在这个页面的meta数据里添加了Open graphic protocol 数据,你希望分享到facebook, google+等社交网站时,你会发现在分享页面显示的数据和图片并不是你想要显示页面的数据。

三、解决方案

上面的问题是因为Open graphic protocol 数据获取并不支持跳转,如果遇到跳转,一般都会去网站首页拾取数据,而这并不是我们想要的。引起这个问题就是setRedirect。 setRedirect的原理是发送给浏览里的HTML头中包含了跳转指令。而解决上面的问题的方法是不使用setRedirect, 而是使用display. 每一个JControllerLegacy都有一个display方法,你只要设置input里的view, layout, 以及其他你要传递过去的数据,然后调用display方法就可。

下面是示例代码:

    /**
     * 内部跳转,用于代替setRedirect. 为什么要这样子做呢?
     * 因为 setRedirect他会发送一个http头到浏览器,让浏览
     * 进行跳转,这样一来就多了一个网络请问, 这是其一。最
     * 为主要的是setRedirect在某些不支持浏览器redirect的情况
     * 下达不到效果,例如:open graphic protocal
     * 
     * @param type $view 要显示的view
     * @param type $layout 要显示的layout, 默认为NULL
     */
    protected function internalRedirect($view, $layout=null){
        $this->input->set("view", $view);
        $this->input->set("layout", $layout);
        return $this->display();
    }
    
    public function checkAvailable(){
        //其他的业务代码
        $this->input->set('tmpl', 'doexam');
        return $this->internalRedirect("doexam", $layout);
    }

上面的代码是写在你的Controller里的。函数internalRedirect通过设置$input(这个input是指url的输入参数) 中的view, layout,然后直接调用JControllerLegecy的display方法来显示页面。

在checkAvailable方法中,在调用internalRedirect之前,还设置了其他 view需要的参数。

梦溪的一个朋友说他在做他的一个网站 时遇到了这样的问题,我们讨论并分析了Joomla的实现代码,发现其实这个解决挺容易, 只要你熟悉Joomla组件开发。如果你有问题,可以找我一起交流

希望本文能够解决你所遇到的问题。

创业前需要知道的5个编程谬论

英文原文:Five Things I Knew About Programming Before I Did a Startup

  我是一名黑客。在我还就膝盖那么高的时候就开始用一台古老的 Commodore 64 写代码了。直到今天,也没有什么比戴上耳机,破解东西更让我着魔的了。所以在我创建我的第一家企业时,我就已经知道了很多有关于编程的事情。是不是谬论,且听我下面一一道来:

1. 代码很重要

  我在很多地方工作过,发现成功之中隐藏着这样一种普遍现象:早期的代码看上去像是一群程序猿喝醉之后写的。这听上去似乎有悖常理,那是因为你得竭尽全力让企业成长,所以就没有时间去追求软件的完美。从另一方面讲,失败的企业,却会花很多很多时间来修正其代码库。

  打个比方:如果你是一个寿司师傅。作为你工作的一部分,你收集了一套绝版的刀具。你花时间花精力来完成收藏,它们提升了你作为一名厨师的竞争力。

  但无论你每天用多少时间去打磨你的道具,你就不是一个铁匠。你的工作依然是做寿司。你虽然拥有了世界上最好的刀具,但如果做不好寿司,那么你的客户服务就是差评。你的餐馆生意永远不会成功。

  软件也是同样的道理。当你运营公司的时候,你的业务目的是满足客户。代码只是一个能达到目的的工具,它本身并不是目的。你可以,也应当关心你的代码,因为这能有助于提升客户服务。但是,如果错将工具当作了目标,那么注定你将一败涂地。

  经验教训:你的客户并不关心什么测试覆盖率、技术堆栈,版本控制系统,也不在乎你使用了什么算法。你的工作就是解决客户的问题,越方便越好。

2. …关注实现,而不是点子。

  这听起来似乎违背了传统的创业须知:快速发布!执行!迭代!执行,不需要创意!快速失败!

  上面这些都是伟大的忠告。但是,“不需要创意”,并不意味着我们能通过卓越的执行矫正一个糟糕的点子。成功就是发现好的问题,再好好地解决这个问题。所以,点子好却没有好好实现或者完美实现了一个坏点子,都是不行的,当然前者还有得救。

  很多程序员被困实现的死亡漩涡中,花了大量的时间去创建各种功能或者修复 bug,相信再添一个功能就能成功。我告诉你,这是错觉。你只需要解决了某个重要的问题,否则你这样不断为产品添加功能根本是没有意义的,除非你添加的功能确实能解决需要的。

点子好却没有好好实现,总比完美实现了一个坏点子要好。

  经验教训:如果你添加的功能是用来修复一个失败的产品,那么最好先问问自己这能不能真正地解决问题。

3. ……代码是写给计算机的

  我总是想不通为什么这一错误会如此之历久弥坚。无论程序员是第几次因为同事的糟糕文档和沟通习惯而陷入困境,他们因此而得出的结论往往还是——程序员天生不擅长这类事情,也不应该做做这些事情。

  大错特错啊。

  如果你是一个团队的一部分,那么提升团队效率最大的一个障碍就是沟通——这不是夸张,团队面对的是O(n2)问题。如果代码是你的主要输出,那么你需要改变你对编程的看法:代码是写给人看的,然后又刚好能在计算机上运行。

  很多时候,我看到程序员花了几个小时孜孜不倦地写代码,但是却省略了用于更新代码文档的十分钟。这是因为他们觉得:“杀鸡焉用宰牛刀,这种事情留给以后的人就行了,我的时间宝贵着呢。”从某种意义上讲,他们的想法荒谬至极。

  经验教训:代码是写给人看的。没文档就不要写代码。

4. …这是代码编写的最后一步了。

  你是不是认为,一旦你写完这个功能,投入产品,那就大功告成了?错了。每一个功能都有一个生命周期。你今天写的代码,如果成功,那么将会在你之后的多代程序员中耀武扬威。可能,就为了照料你今天写的代码,而不得不成立一个团队。

  好好想一想。如果你的工作就是为了照料别人写的代码,你愿不愿意?

  解决问题的关键是要有危机意思:写完第一个版本,并不意味着代码的完结。务必做好文档、注释、整理等工作。

  经验教训:己所不欲,勿施于人。

5. …程序员的工作就是写代码

  大多数的程序员认为利用时间的最佳方式是坐在电脑前,戴上耳机敲代码。但是,如果你写的每行代码都必须维护和支持整个产品的生命周期,那么算法就又有所不同了。

061719410088882

  当你是因为爱好写代码的时候,那么你可以为所欲为,做任何你喜欢做的事情。但是如果你是在一个团队中生产产品,那么你的首要义务变成了维护现有的代码。其他的重要工作为:协调、沟通、规划和指导。

  经验教训:程序员的工作是解决问题。指的并不总是写代码。

你不仅是程序员,也是产品经理。

  有时候,你可能会想:这事情听起来像是产品经理的工作,而不是程序员的。但是,如果你拿的是写代码的薪水——尤其是在初创企业——那么把自己当成是产品经理吧。如果你也希望产品能获得成功,那么从大局出发是至关重要的。这不仅有利于你的初创企业,对你将来的事业发展也很有好处。

  最后,如果各位什么不同见解,欢迎不吝赐教