【问题标题】:Remove trailing slash from real directories从真实目录中删除尾部斜杠
【发布时间】:2019-05-07 05:12:38
【问题描述】:

你好吗?如果您不介意,请提出一个非常小的问题。

在此线程中的上一集重定向和重写规则:redirect to default language except for /amp/ Urls 之后,我们的 SEO 机构建议我们将 URL site.com/fr、site.com/be 更改为 site.fr 和 site.be

我已经为旧网址设置了 301 重定向,如下所示:

RewriteRule ^[a-z]{2}$ / [R=301,L]
RewriteRule ^[a-z]{2}/(.*)$ /$1 [R=301,L]

我知道这可以通过一条规则实现,但没能成功:/

因为我现在删除了语言文件夹,所以删除尾部斜杠并不能很好地工作。 site.com/test 添加了斜线,因为“​​test”文件夹存在并且是一个真实文件夹。我尝试了 DirectorySlash Off,但它返回了一个禁止的 403 错误。 请知道如何解决这个问题?

非常感谢

【问题讨论】:

  • 我已经更新了我的帖子,希望它更清晰
  • 我不再使用语言/本地化文件夹,site.com/fr/contact 变成 site.fr/contact 和 site.com/uk/contact 变成 site.co.uk/contact
  • 我无法访问虚拟主机 :( site.com/test/ 没有问题,只是所有网站都没有斜杠,所以我想保留同样的事情......
  • 出于安全原因,您必须允许在真实目录后面使用斜杠,否则使用Options -Indexes 禁用目录列表。由于斜杠不是问题,我认为需要编辑问题,因为不清楚核心问题是什么。
  • 我目前在我的 htaccess 中使用Options All -Indexes,我将其更改为Options -Indexes,但斜线仍然出现在末尾...正在重命名真实文件夹,然后使重写规则成为一个很好的解决方案防止尾随斜杠?

标签: apache .htaccess url-rewriting


【解决方案1】:

关注我的cmets:

将这两个显示的规则合二为一:

RewriteRule ^[a-z]{2}(?:/(.*))?$ /$1 [R=301,L,NE]

【讨论】:

  • 嘿,请再次将我无法写入 1 条规则的另外 2 条规则:RewriteRule ^(.*)/amp$ /$1?amp=1 [NC,QSA,L] RewriteRule ^(.*)amp$ /$1?amp=1 [NC,QSA,L] 第一条规则不适用于主页 (site.fr/amp) 这就是原因我不得不添加第二个。我怎样才能将它们分组为一个规则?谢谢
  • 可能是RewriteRule ^(.*)/?amp/?$ $1?amp=1 [NC,QSA,L]
  • 这就是您的两条规则所做的。还让我再次请求,我不喜欢通过 cmets 解决问题。即使我试图提供帮助,但如果它不起作用,请打开一个新问题。
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 2014-06-19
  • 1970-01-01
相关资源
最近更新 更多