【问题标题】:301 Redirect Changing Wrong Part of URL301重定向更改URL的错误部分
【发布时间】:2017-04-05 15:55:06
【问题描述】:

在我的 .htaccess 文件中,我有以下重定向:

Redirect 301 /About-Us http://www.example.com/about-us
Redirect 301 /About-Us/Profile http://www.example.com/about-us/profile

问题是如果输入以下地址:

www.example.com/About-Us/Profile

上面的代码将其更改为:

www.example.com/about-us/Profile

简而言之;它会更改 URL 的第一位,但不会更改第二位。我怎样才能避免这种情况?我知道用于重定向整个文件夹的RedirectMatch 301 ^/folder/ /new-folder 规则,但这不能满足我们的需求。我也知道大写文件夹不是一个好习惯。我没有建立这个网站。

【问题讨论】:

  • 你过得怎么样?

标签: apache .htaccess redirect mod-rewrite http-status-code-301


【解决方案1】:

如果你所有的 URL 或者至少不是文件的 URL 都应该是小写的,那么你最好只重写一次:

.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule [A-Z] LC.php [NS,L]

LC.php 中(大写文件名是故意的)

<?php
$u = explode('?', $_SERVER['REQUEST_URI']);
$u[0] = strtolower($_SERVER['HTTP_HOST'] . $u[0]);
header('Location: http://' . implode('?', $u), true, 301);

这具有更强大的优势,因为不必抢占混合大小写 URL 的所有可能组合。你不必使用 PHP,但你明白了。

【讨论】:

    【解决方案2】:

    想通了。您需要将$ 表达式添加到父文件夹的末尾,如下所示:

    Redirect 301 /About-Us$ http://www.example.com/about-us  
    

    然后所有子文件夹和文件将正确重定向

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      相关资源
      最近更新 更多