.htaccess apache URL rewriting


.htaccess apache URL rewriting

我已经进行了多次搜索,但还没有找到我要找的东西。

我需要执行一些URL重写,但我没有编写重写代码的专业知识。我刚刚开始学习regex和apacheURL重写。

解决问题。我想使用这些重定向的网站是一个.com域,因此用户将来自多个国家。网站上有一家网店。在初始登录页面上,您可以选择您来自哪个国家,它将带您进入

www.domain.com/*country*/

它有网上商店。

这就是它变得复杂的地方。根据用户点击的国家,我想在他们点击产品并进入商店后,将国家名称附加到URL中。

E.G "www.domain.com/*country*/*product-category*/

目前,当你在选择国家后点击产品时,它会进入

www.domain.com/*product-category*/

该网站正在运行Wordpress。不确定还需要什么其他信息。

谢谢,伙计们!

如果你可以控制网店实现的实现,那么解决方案可能很容易:正如所说,你必须以某种方式确保所有URL都是从该商店发送的,这样你就可以在商店导航中点击/选择URL,并在其中携带所选的国家/地区编码。由于商店首先使用该信息进行调用,因此该信息是可用的,并且实际上非常容易使用,就像您描述基本url的结构一样:www.domain.com/*country*/。易于使用,因为国家代码是商店基本url的一部分,而不是必须以明确方式处理的任意参数。因此,您需要注意的是:让商店在发送给客户端的所有URL中使用相对链接。相对链接只是相对路径(因此,没有前导斜杠(/)的路径)。浏览器通过在加载的当前页面的基本url前加上前缀来处理相对链接,以创建完整的url。因此,在您的情况下,这意味着:

  • 基本网址:www.domain.com/*country*/
  • 相对链接:product/123456/action/buy(仅举一例)
  • 浏览器编写的url:www.domain.com/*country*/product/123456/action/buy

这正是你想要的:你不需要以明确的方式处理/指定国家代码,但它包含在所有URL中。您"只需要"确保在商店实现中使用相对链接。

附带说明:一般来说,相对于绝对链接或url,人们应该更喜欢相对链接,因为它保持了实现的灵活性、可重定位性和可移植性。只有对外部目标的引用才应编码为url。

其他方法可能是:

  • 通过路由所有请求,使用该"登录页"作为网店的请求中继。这意味着您在路由/重写过程中进入了脚本级别,因此您手头有更多的方法。具体来说,您可以在路由级别使用php会话
  • 更改基本url的结构:使用虚拟主机而不是url路径来对所选国家/地区进行编码,因此使用mozambique.domain.com或spitzberger.domain.com等域名。虽然所有虚拟主机共享同一个安装,但现有实现很可能会自动考虑域名
  • 在重写过程中考虑每个传入请求的"referrurl"。这实际上很容易实现,但我担心它对所有浏览器来说都不是真正安全的,因为这依赖于http referrer标头出现在所有请求中,这很容易被阻止。同样,在这种情况下,深度url会导致错误,因为所需的信息只是丢失了
  • 通过javascript动态更改url的目标。这样做的优点是,除了在头中引用单个脚本文件之外,您不必更改商店实现中的任何内容。该脚本包含更改用户发起的所有脚本或表单提交的目标url的代码。但是,与前面的方法一样,这似乎并不健壮,因为需要使用javascript,而javascript可能在客户端被禁用。另一方面,并不意味着它是不安全的(安全和稳健是两回事),因为丢失的国家代码没有风险,它只会导致必须处理的错误

在wordpress中有一个永久链接选项来声明自定义url。它很容易用,但我不确定你的情况。