管理使用类似链接的内容重定向到内部或外部URL

collective.redirect的Python项目详细描述


管理使用类似链接的内部或外部URL重定向 内容仅限Products.redirectiontool或plone.app.redirector 处理重定向到门户内部的内部url, collective.redirect允许重定向到外部URL。这个 使用重定向实例管理要重定向的路径 内容类型。重定向的路径独立于 重定向实例的路径有两个原因。

首先,由于portal对象不是基于btree的文件夹,它将 如果添加了太多对象,则开始表现不佳。允许 独立于重定向位置的重定向路径 实例允许许多重定向而不放置太多对象 在门户根目录中

其次,路径独立于重定向实例 位置允许用户为无法重定向的路径创建重定向 也添加内容。记住这对你的 当然也可以被滥用为DoS攻击。

如果对于同一路径存在多个重定向,则具有更多重定向的重定向 最新出版日期为准。最终重定向将 永远不要重写可遍历的url。听着,重定向不能 覆盖实际的内容对象、外观对象、视图或任何其他内容 穿越。只有当NotFound错误 否则将被提起。

使用浏览器

>>> from Products.Five import testbrowser
>>> browser = testbrowser.Browser()
>>> portal.error_log._ignored_exceptions = ()
>>> portal_url = portal.absolute_url()
<>在添加重定向之前,返回不存在的URL将返回 404页。

>>> browser.open(portal_url+'/foo')
Traceback (most recent call last):
HTTPError: HTTP Error 404: Not Found
>>> browser.open(portal_url+'/bar')
Traceback (most recent call last):
HTTPError: HTTP Error 404: Not Found

打开另一个浏览器并以可以添加重定向的用户身份登录。

>>> from Products.PloneTestCase import ptc
>>> member_browser = testbrowser.Browser()
>>> member_browser.handleErrors = False
>>> member_browser.open(portal.absolute_url())
>>> member_browser.getLink('Log in').click()
>>> member_browser.getControl(
...     'Login Name').value = ptc.default_user
>>> member_browser.getControl(
...     'Password').value = ptc.default_password
>>> member_browser.getControl('Log in').click()
>>> member_browser.open(portal_url+'/Members/test_user_1_')

添加重定向将“本地路径”字段设置为 已从重定向。本地路径始终位于入口套 “url”字段指向应重定向到的url。

>>> member_browser.getLink(url='createObject?type_name=Redirect').click()
>>> member_browser.getControl('Title').value = 'Foo Redirect Title'
>>> member_browser.getControl('Local Path').value = '/foo'
>>> member_browser.getControl('URL').value = '/plone/events'
>>> member_browser.getControl('Save').click()
>>> print member_browser.contents
<...
...Changes saved...
...Foo Redirect Title...
...Local Path...
.../foo...
...URL...
.../events...

当访问本地的用户无法访问重定向时 路径,例如当重定向的工作流禁止它时, 不会发生重定向。

>>> foo_redirect = portal.Members.test_user_1_['foo-redirect-title']
>>> portal.portal_workflow.getInfoFor(
...     foo_redirect, 'review_state')
'private'
>>> browser.open(portal_url+'/foo')
Traceback (most recent call last):
HTTPError: HTTP Error 404: Not Found

一旦可以访问重定向,访问本地路径的用户 已重定向到远程URL。

>>> self.loginAsPortalOwner()
>>> portal.portal_workflow.doActionFor(foo_redirect, 'publish')
>>> self.logout()

使用VHM样式的URL来模拟虚拟主机环境

>>> browser.open('http://nohost/VirtualHostBase/http/nohost'
...              '/VirtualHostRoot/plone/foo/')
>>> browser.url
'http://nohost/plone/events'

没有重定向的本地路径仍然返回404页。

>>> browser.open(portal_url+'/bar')
Traceback (most recent call last):
HTTPError: HTTP Error 404: Not Found

变更日志

0.5-2010年11月10日

    LI>两个或多个不存在段的局部路径不起作用, 因为遍历在第一个不存在的段停止,然后 request.url将返回此截断的路径,因此没有匹配的 查询目录时的结果。已将视图更改为使用实际的URL 而是返回实际使用的url。

0.4-2009-06-03

  • 对plone的标准错误消息的回退是aq包装在 plone_模板皮肤文件夹,以便皮肤优先级 忽略,例如,不允许重写 默认错误信息

0.3-2008年11月14日

  • 添加对VHM的支持

0.2-2008年11月12日

  • 从开发中删除意外提交

0.1-2008年11月11日

  • 初次发行

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Requestcontextholder在spring 4中具有并发访问权限。IBMWebSphere上的x Web应用程序?   java如何下载、设置和使用Eclipse?   java如何组合这些mysql语句   java JDBC无法连接到openshift上的mysql数据库   如果存在允许正确处理的重载,java对于方便的方法来说是否可行?   使用hibernate序列的java Spring MVC不存在   具有路径的java Selenium ChromeDriver负载扩展问题   读一本书。java中的java文件   退出队列时,Java队列程序结果为空   Java lambda返回带有重复代码问题的列表   java使用意图从其他活动传递数据并在listview中显示   java如何在java中创建JSON输出   java Android:在不破坏或暂停活动的情况下关闭显示   支持Android电视和手机的java多apk   关于Java应用程序测试和调试的一组问题   如何在JavaSE中使用jdbcRealmShiro进行授权   在java中是否有一个无异常检查的URL解析实用程序?   当页面上有多个相同类型的元素时,java会选择一个特定的元素   递归需要帮助发现java代码中的缺陷