早些时候在我的网站上我没有使用php urlencode函数来编码我的url查询参数,google抓取了这些错误。 现在实施更改后,那些索引的旧网址正在提供404响应代码。我尝试通过htaccess重写将旧网址重定向到新网址,但它无法正常工作。
假设我想将/category/Science.html
重定向到新网址/category/Science, Engineering & Technology.html
。对于Science, Engineering & Technology
,我通过urlencode
函数获得'科学%252C%2BEngineering%2B%2526%2BTechnology'。
当我尝试通过此规则重写网址时:
RewriteRule ^category/Science.html$ /category/categ.php=Science%252C%2BEngineering%2B%2526%2BTechnology[R=301,L]
它不起作用。
请建议解决此问题的正确方法。
答案 0 :(得分:1)
由于这样的原因,您的文件名应仅包含小写字母,数字,连字符和下划线。如果由于某种原因,你无法重命名你的文件,你可以做一些PHP技巧:
ErrorDocument 404 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
我建议不要这样做,因为它很草率,难以管理,而且不是预期的行为,但是如果你无法重命名这些文件,那就去吧。