【问题标题】:Remove question mark from URL query从 URL 查询中删除问号
【发布时间】:2017-01-15 15:52:19
【问题描述】:

有什么方法可以像这样使用 Mod_Rewrite 从 URL 中删除问号?:

domain.com/controller-name?parameter/parameter/parameter

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

domain.com/controller-name/parameter/parameter/parameter

我想将它添加到 PrestaShop 中的 htaccess,在那里我发送如下查询:参数/参数/参数到控制器。

普通 Presta URL 是 domain.com/index.php?controller=controller-name,我在 SEO 设置上设置了此控制器的友好 URL 以仅重写为控制器名称,因此 SEO 友好 URL 是 domain.com/controller-name 。

要将一些参数发送到此控制器,我可以使用如下 URL:domain.com/controller-name?(此处为参数)

在我的控制器中,我在问号后获取参数?并根据此参数显示内容。参数用斜杠分隔。所以我想去掉问号并用斜杠替换它以获得: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 配置中以使用 / 代替?在查询中...这将是一个很好的解决方案...

【问题讨论】:

    标签: .htaccess mod-rewrite prestashop prestashop-1.6


    【解决方案1】:

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

    或者,您可以将 window.location.hash 属性设置为包含您需要的任何状态信息的值,然后使用 window.onhashchange 事件,或者对于不支持 onhashchange 的旧浏览器(IE

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

    需要注意的一点是与页面上的 id 冲突,因为浏览器会滚动到任何具有匹配 id 的元素。

    【讨论】:

    • 感谢重播,但我不认为你的建议是好的。想法是从代表查询字符串的链接中删除问号。 URL 必须是友好的。这一切都需要更好的搜索引擎优化。因此,在您的建议 URL 中将带有问号,加载后 jQuery 将删除他。不幸的是,这不是一个解决方案......
    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 2015-06-25
    • 2014-05-27
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2016-01-09
    相关资源
    最近更新 更多