【发布时间】:2012-11-19 00:55:22
【问题描述】:
在网站上有一个文件夹products/,里面是带有一些大写字符的php文件。
示例: www.example.com/products/BIT-Defendar.php
现在这个网址已经存在多年并且遍布搜索引擎。这是产品经理的错误。
但我想解决这个问题,我只需要小写 URL。
这能解决我的问题吗? CheckSpelling OnCheckCaseOnly On(1)
和上面提到的有什么不同和:(2)
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1}
如果我使用 (1),那么我请求 url 小写或大写 (但我会遇到搜索引擎问题吗?)
如果我使用 (2),我必须将 products/ 文件夹内的所有文件重命名为小写。
---- 编辑----
当我使用 RewriteRule 时,如果 url 是大写的,我会转移到域根目录,如果我使用 CheckSpelling 和 CheckCaseOnly,那么一切都很好。
我已经 用 this 进行了测试,我得到了:
RewriteCond %{REQUEST_URI} [A-Z]
- 满足这个条件
RewriteRule (.*) ${tolowercase:$1} [R=301,L]
- 符合这条规则,新的 url 是 http://www.example.com/${tolowercase:products/BIT-Defendar.php}
- 由于 RewriteRule 选项中的 R,测试已停止。将使用状态码 301 进行重定向
我在httpd.conf中的设置:
<VirtualHost *:80>
RewriteMap tolowercase int:tolower
</VirtualHost>
【问题讨论】:
-
您可能需要将用户重定向到小写 URL 而不是重写。搜索引擎可以看到重定向,而不是重写。
-
当我使用 RewriteRule 时,如果 url 被大写,如果我使用 CheckSpelling 和 CheckCaseOnly,我会转移到域根目录那么一切都好。