【问题标题】:How to add Secure URL for Custom rewrite URL In Magento custom Module如何在 Magento 自定义模块中为自定义重写 URL 添加安全 URL
【发布时间】:2015-02-28 20:41:04
【问题描述】:

我正在尝试将安全 URL 添加到我的自定义模块 - 下面是我的 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 即http://www.example.com/myschemes/,我需要使 myschemes url 只能通过 https://(例如:https://www.example.com/myschemes/)访问。

如果我为 myschemes 添加安全 url,那么上面的重写不起作用。如果我输入https://www.example.com/myschemes/ 作为网址,它会重定向到https://www.example.com/scheme/user//

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

【问题讨论】:

    标签: php magento magento-1.8


    【解决方案1】:

    我猜你从旧的 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 所以事实上,当您的查询 URL 中有参数时,这种(.*)$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 -->
    

    请注意,&lt;secure_url&gt; 下的&lt;scheme&gt; 节点是一个句柄,您可以随意重命名它。 另请注意,您甚至可以像这样将 https 保护细化到模块的一个控制器:

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

    甚至像这样的单个动作

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-19
      • 2012-08-29
      • 2016-04-12
      • 1970-01-01
      • 2014-01-23
      • 2018-12-18
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      相关资源
      最近更新 更多