如何为自定义重写URL添加安全URL在Magento自定义模块中

时间:2015-01-02 14:08:12

标签: php magento magento-1.8

我试图将安全网址添加到我的自定义模块 - 下面是我的config.xml示例代码

     <frontend>
        <secure_url>
            <scheme>/scheme/</scheme>
        </secure_url>
        <routers>
            <scheme>
                <use>standard</use>
                <args>
                    <module>Companyname_Scheme</module>
                    <frontName>scheme</frontName>
                </args>
            </scheme>
        </routers> 
    </frontend>
    <global>
        <rewrite>            
            <myschemes>
                <from><![CDATA[/myschemes\/(.*)/]]></from>
                <to><![CDATA[scheme/user/$1/]]></to>
                <complete>1</complete>
            </myschemes>
        </rewrite>
   </global>

如果用户强行加载非http,即https://www.example.com/myschemes/,我需要让 myschemes 网址仅通过https://(例如:http://www.example.com/myschemes/)进行访问

如果我为 myschemes 添加安全网址,则上面的重写无效。如果我输入https://www.example.com/myschemes/作为网址,则会重定向到https://www.example.com/scheme/user//

我怎样才能做到这一点?请帮忙。

1 个答案:

答案 0 :(得分:0)

我猜你从旧的Magento或旧的Magento教程(like this ?)得到了这个示例config.xml,因为那些重写的控制器路由不再使用了。

但是为了进一步理解,这是你的实际代码所做的:

 <from><![CDATA[/myschemes\/(.*)/]]></from>

这一行是Magento中的'.htaccess like'机制,小组(.*)告诉Magento在myschemes/和以下/之后获取所有内容以进行进一步处理

<to><![CDATA[scheme/user/$1/]]></to>

这告诉Magento获取(.*)的信息并将其附加到scheme/user/

所以如果你写http://www.example.com/myschemes/some_info_or_id/ Magento会将你重定向到http://www.example.com/scheme/user/some_info_or_id 事实上,当您在查询网址中有参数时,(.*)$1机制是动态重定向。

现在,我认为这不会对原始问题有所帮助或与之相关,但这就是您的代码现在所做的。

现在你想要实现的是这个config.xml:

    <frontend>
        <!-- there under is the xml node you need -->
        <secure_url>
            <scheme>/myschemes</scheme>
        </secure_url>
        <routers>
            <scheme>
                <use>standard</use>
                <args>
                    <module>Companyname_Scheme</module>
                    <frontName>myschemes</frontName>
                </args>
            </scheme>
        </routers> 
    </frontend>
    <!-- global>
        <rewrite>            
            <myschemes>
                <from><![CDATA[/myschemes\/(.*)/]]></from>
                <to><![CDATA[scheme/user/$1/]]></to>
                <complete>1</complete>
            </myschemes>
        </rewrite>
   </global -->

请注意,<scheme>下的<secure_url>节点是句柄,您可以根据自己的喜好对其进行重命名。 另请注意,您甚至可以将https保护仅改进模块的一个控制器,如下所示:

<secure_url>
    <scheme>/myschemes/controllername</scheme>
</secure_url>

甚至是像这样的单一动作

<secure_url>
    <scheme>/myschemes/controllername/actionname</scheme>
</secure_url>

如需进一步参考,请查看一些核心模块,如Mage_Rss的config.xml或Mage_Checkout