0

早些时候在我的网站上,我没有使用 php urlencode 函数来编码我的 url 查询参数,谷歌抓取了这些错误。现在实施更改后,那些索引的旧 url 给出 404 响应代码。我试图通过 htaccess rewrite 将旧 url 重定向到新的,但它不起作用。

假设我想重定向/category/Science.html到新的 url /category/Science, Engineering & Technology.html。对于Science, Engineering & Technology,我通过urlencode函数获得“Science%252C%2BEngineering%2B%2526%2BTechnology”。

当我尝试通过此规则重写网址时:

RewriteRule ^category/Science.html$ /category/categ.php=Science%252C%2BEngineering%2B%2526%2BTechnology[R=301,L]

它不起作用。

请提出解决此问题的正确方法。

4

1 回答 1

1

由于此类原因,您的文件名只能包含小写字母、数字、连字符和下划线。如果出于某种原因,您无法重命名文件,您可以做一些 PHP 技巧:

.htaccess

ErrorDocument 404 404.php

404.php

<?php
switch($_SERVER['REQUEST_URI']){
    case "/category/Science.html":
        header('HTTP/1.1 301 Moved Permanently');
        header("Location: /category/".urlencode("Science, Engineering & Technology").".html");
        exit();
    break;
    ...
}

// Custom 404 page stuff

我建议不要这样做,因为它草率、难以管理并且不是预期的行为,但是如果您无法重命名文件,那就去吧。

于 2013-06-06T06:24:45.387 回答