【问题标题】:,htaccess Configuration Meaning,htaccess 配置含义
【发布时间】:2021-02-16 19:52:23
【问题描述】:
############################################
## new my account page redirect

RewriteCond %{REQUEST_URI} !/customer/account/logout/
RewriteCond %{REQUEST_URI} !/loginPost/
RewriteRule ^customer/account/ https://www.website.com/customer/site_account [R=301,L]
  • 我很想知道上面的配置是什么意思 .htaccess 文件?
  • 它在我的 magento 应用程序中指导或做什么?
  • 我已更新问题并添加了“RewriteRule”。实际上我有一个 href="/customer/account/logout/" 当我点击 href 它请求“POST”请求时。当我在 URL(另一个选项卡)中打开相同的链接时,它显示“GET”请求。所以,我想从上述问题中得到的东西是,我怀疑 .htaccess 中的上述配置(在问题中提到)是否在 href 而不是 GET 上发出 POST 请求。

我在搜索结果中找不到有效信息。

随时分享想法。 谢谢。

【问题讨论】:

  • 首先感谢您在问题上的努力,继续努力。恕我直言,您的 htaccess 文件对我来说看起来不正确,它只有 RewriteCond(conditions) 但没有 RewriteRule,所以我认为它不会重写或重定向任何 url。如果您对如何重写或重定向网址(地狱或外部)有疑问,请务必在您的问题中提及所有详细信息。
  • 感谢您的回复,我已更新问题并添加了“RewriteRule”。实际上我有一个 href="/customer/account/logout/" 当我点击 href 它请求“POST”请求时。当我在 URL(另一个选项卡)中打开相同的链接时,它显示“GET”请求。所以,我想从上述问题中得到的东西是我怀疑.htaccess 中的上述配置(有问题提到)是否在href而不是GET上发出POST请求。请分享您对此的看法。谢谢你
  • 抱歉,这仍然不清楚,如果您可以在问题中添加详细信息。就像您要重定向或重写从哪个 url 到哪个 url 那样会有所帮助,但请仅在您的问题中更新此内容,因为 cmets 不是为此而设计的,谢谢,学习愉快:)

标签: .htaccess magento configuration


【解决方案1】:

这是你的规则:

RewriteCond %{REQUEST_URI} !/customer/account/logout/
RewriteCond %{REQUEST_URI} !/loginPost/
RewriteRule ^customer/account/ https://www.website.com/customer/site_account [R=301,L]

这永远不会发出任何POST 请求,但可能会发生在这种情况下:

  1. 浏览器向 URI /customer/account/logout/ 发送 POST 请求
  2. 由于您的第一个RewriteCond,该请求第一次跳过此规则
  3. 此 .htaccess 中的另一条规则(因为这是 Magento)将每个非文件、非目录重写为 index.php
  4. mod_rewrite 再次循环,此规则重定向第二次,因为 REQUEST_URI 现在已变为 /index.php
  5. 此规则现在使用来自浏览器的 GET 请求进行重定向。

你应该在这条规则中做两处调整:

  1. 对于POST 请求跳过此重定向
  2. 匹配THE_REQUEST(原始请求)而不是可修改的REQUEST_URI

建议规则:

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} !/(customer/account/logout|loginPost)/ [NC]
RewriteRule ^customer/account/ /customer/site_account [R=301,L,NC]

PS:测试前请务必清除浏览器缓存。

【讨论】:

  • 您好,感谢您的回答,我可以将此请求作为“GET”客户/帐户/注销|loginPost 吗?
  • 5.此规则现在使用来自浏览器的 GET 请求进行重定向。实际上它没有发生 POST 请求。
  • 其实我有一个 href="/customer/account/logout/" 当我点击 href 时它请求“POST”请求。当我在 URL(另一个选项卡)中打开相同的链接时,它显示“GET”请求。我不确定是什么配置导致“/customer/account/logout/”api 调用为“POST”。
  • when i click on href it requests "POST" request:这发生在您的代码中。 Javascript 或后端
  • 在 Chrome 开发工具中使用 缓存禁用 进行测试,然后在“网络”选项卡中检查您获得的 301/302 重定向 URL 是什么。
猜你喜欢
  • 1970-01-01
  • 2011-03-28
  • 2016-01-05
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 2017-02-11
相关资源
最近更新 更多