【问题标题】:Remove .htaccess 301 RedirectMatch trailing slash?删除 .htaccess 301 RedirectMatch 尾部斜杠?
【发布时间】:2016-05-11 20:09:05
【问题描述】:

我有一个 redirectMatch 规则:

RedirectMatch 301 /dir/subdir/safety-program(.*) /dir/subdir/safety-program/$1

当我加载安全程序地址时,如下所示:

http://localhost/dir/subdir/saftey-program/

http://localhost/dir/subdir/saftey-program

我得到的安全程序页面返回了以下地址,并带有一个额外的斜杠:

http://localhost/dir/subdir/safety-program//

为什么匹配添加第二个斜线?如何删除它?

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    问题出在safety-program/$1,应该是这样的safety-program$1

    为什么要改变它

    RedirectMatch 是这样来的

    RedirectMatch [status] regex URL
    

    所以[status] 是:301regex 是:/dir/subdir/safety-program(.*) 然后有一个url 是:/dir/subdir/safety-program/$1 和这部分,$1url 将匹配这个regex 的一部分,(.*),所以你在这个(.*) 中加上斜线,然后就像这样$1 包括那个斜线,你在url 中表达了这样的/$1 ,所以为什么会出现双斜杠。

    这正是你所做的。

    无论何时请求/dir/subdir/safety-program/,它都会是/dir/subdir/safety-program//

    所以将行代码更改为:

    RedirectMatch 301 /dir/subdir/safety-program(.*) /dir/subdir/safety-program$1
    

    或者这个:

    RedirectMatch 301 /dir/subdir/safety-program/(.*) /dir/subdir/safety-program/$1
    

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多