如果有人问这个问题我很抱歉,但我找不到它,也不确定我甚至在搜索什么。
我的网页应用中有链接(在谷歌应用引擎上托管)/ search / like:
<a href="./details/">Details</a>
或
<a href="details/">Details</a>
只要/ search /具有尾部反斜杠(指向/ search / details /),都可以正常工作,但如果/ search缺少尾部反斜杠(而是指向/ details /),则会中断
将链接设为:
<a href="/search/details/">Details</a>
始终指向正确的位置,但这不起作用,因为我有一个搜索结果模板,它们有时出现在/ search /以外的页面上,每个页面都需要自己独特的详细信息请求处理程序。
有没有办法确保
<a href="./details/">Details</a>
语法不会破坏??
感谢deceze的帮助,我提出了一个解决方案,即始终在我的网址上强制使用尾部斜杠并坚持使用相对结构。我重定向所有请求,而不使用尾部斜杠:
('.*[^/]$', AddSlashHandler),
并且处理程序执行此操作:
class AddSlashHandler(Handler):
def get(self):
if self.request.path:
red_url = self.request.path + '/'
if self.request.query_string:
red_url += '?' + self.request.query_string
self.redirect(red_url)
else:
self.redirect('/')
答案 0 :(得分:2)
您只有两个选择:
绝对路径以/
开头,并且始终是页面根的绝对路径;含义/foo/bar
始终解析为http://www.example.com/foo/bar
。
相对路径不以/
开头,它们的规则稍微复杂一些。实质上,相对路径会附加到当前URL中的最后/
。如果您使用/foo
,则相对网址bar
会解析为/bar
。如果您使用的是/foo/
,则会转换为/foo/bar
。
您可以正确处理此问题。通常在服务器端框架(PHP等)中,您有一些功能可以正确生成到所需位置的绝对URL。为此目的调查 URL路由器。既然你说你在不同的URL上使用相同的页面,我怀疑你在不同的上下文中重复使用相同的模板,这意味着某种服务器端组件,所以建立一个理智的URL处理策略应该是你的优先级