首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从URL查询中删除问号

从URL查询中删除问号
EN

Stack Overflow用户
提问于 2017-01-15 23:52:19
回答 1查看 838关注 0票数 0

有没有办法像这样用Mod_Rewrite去掉URL中的问号?:

代码语言:javascript
运行
复制
domain.com/controller-name?parameter/parameter/parameter

将控制器名称后的问号更改为斜杠

代码语言:javascript
运行
复制
domain.com/controller-name/parameter/parameter/parameter

我想把它添加到PrestaShop的htaccess中,在那里我像这样发送查询:参数/参数/参数到控制器。

正常的Presta网址是domain.com/index.php?controller=controller-name和我设置的搜索引擎优化设置友好的网址到此控制器重写,只有控制器名称,所以搜索引擎优化友好的网址是域名.com/控制器名称。

为了向这个控制器发送一些参数,我可以像这样使用URL :domain.com/ controller -name?(这里是参数)

在我的控制器中,我在问号后抓取参数?并根据该参数显示内容。参数之间用斜杠分隔。所以我想去掉问号,用斜杠代替它,用参数get:domain.com/controller-name/(here parameters)来代替,我想看起来像这样的domain.com/controller-name/parameter/parameter/

当我使用URL时,domain.com/controller-name/parameter/parameter/显示错误404,并且Presta没有看到我想要来自controller-name的内容。

我认为.htaccess中的mod_rewrite规则是可以实现的,但我不知道如何根据这个问题编写规则。

或者也许有一种方法可以在Presta中添加一些控制器或SEO配置来使用/代替?查询中...这将是一个很好的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2017-01-18 20:30:14

您可以使用history.pushState和history.popState在浏览器中更改URL,这不会导致页面重新加载。但问题是,旧的浏览器不支持这一点。

或者,您可以将window.location.hash属性设置为包含所需任何状态信息的值,然后使用window.onhashchange事件,或者对于不支持onhashchange的旧浏览器(IE < 8,Firefox < 3.6),定期检查散列是否已更改(例如使用setInterval )并更新页面。您还需要在页面加载时检查散列值,以设置初始内容。

如果你使用的是jQuery,有一个hashchange插件可以使用浏览器支持的任何方法。我相信也有其他库的插件。

要注意的一件事是与页面上的id发生冲突,因为浏览器将滚动到具有匹配id的任何元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41663042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档