我试图将安全网址添加到我的自定义模块 - 下面是我的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//
我怎样才能做到这一点?请帮忙。
答案 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