【问题标题】:Keep URL after Trailing slash by preserving URL parameters using htaccess通过使用 htaccess 保留 URL 参数,在斜杠后保留 URL
【发布时间】:2014-01-08 22:02:20
【问题描述】:

由于使用了相对 URL,Google Crawler 以某种方式错误地将我们的网站编入索引。 在对 Google 中的索引 URL 进行彻底分析之后,我们得出的结论是,我们应该通过使用尾部斜杠之后的部分来重定向 URL,但有一些例外。因此,我们尝试将其中许多 URL 以及它们应该如何重定向到下面。

 /a.php/ - Redirect to /a.php
   /a.php// - Redirect to /a.php
   /a.php - Retain as it is
   /a.html - Retain as it is
   /a.php/a.html - Redirect to /a.html
   /a.php/b.php?a=b - Redirect to /b.php?a=b
   /a.html/b.php - Redirect to /b.php
   /a.html/b.php/c.html - Redirect to /c.html
   /a.php/b.php?a=b/c.php?a=b - Redirect to /c.php?a=b
   /a.html/b.php - Redirect to /b.php

请注意 /index.php 已经被重定向到 www.domain.com 您能否帮我们提供一个 htaccess 代码,我们可以使用它来实现这些重定向

【问题讨论】:

  • 你需要展示你已经尝试过的东西。
  • 我们尝试了一些不起作用的代码。不幸的是我没有这个代码sn-p。但我记得它只能删除尾部斜杠。总而言之,它没有用。

标签: apache .htaccess


【解决方案1】:

我相信这应该可行:

# This should match the first two
RewriteCond %{THE_REQUEST} (/[^/]+)(/+) HTTP/1\.[01]$
RewriteRule .* %1 [L,R=301]

# This should match the rest, without matching /a.php and /a.html
RewriteCond %{THE_REQUEST} !^[A-Z]+ /[^/]+ HTTP/1\.[01]$
RewriteCond %{THE_REQUEST} ^[A-Z]+ (/[^/]+)?(/[^/]+)(/[^/]+) HTTP/1\.[01]$
RewriteRule .* %3 [L,R=301]

【讨论】:

  • 这个应该放在htaccess文件的开头
  • 这取决于您的 htaccess 文件中还有什么,您能否提供完整的 htaccess 文件以便我确认正确的位置?并确保没有任何规则发生冲突?
  • 我尝试将其加载到 htaccess 中,但出现 500 服务器错误。也尝试分部分进行,但仍然出现错误。看起来有分钟。 2 个错误。你能帮忙吗?如果你喜欢我也可以在 Skype 上分享我的联系方式
  • 我需要查看您的完整 htaccess 才能提供帮助。将其添加到您的问题中或提供文本共享网站的链接,例如 pastebin.com
  • 我该如何分享。你能提供邮件地址或在Skype上联系我吗?事实上,我也不能在这个帖子中分享,因为有完整的网址,发布规则不允许我上传。如果你没问题,如果我们能用 Skype 通话,那将非常有帮助。如果你同意我可以分享。谢谢
猜你喜欢
  • 2011-05-03
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多