在网站上有文件夹products/里面是带有一些大写字符的 php 文件。
示例: www.example.com/products/BIT-Defendar.php
现在这个网址已经存在多年并且遍布搜索引擎。这是产品经理的错误。
但我想解决这个问题,我只想要小写的 URL。
这会解决我的问题吗?CheckSpelling On
CheckCaseOnly On
(1)
和上面提到的有什么不同:(2)
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1}
如果我使用(1),那么所有工作都会失败,我请求 url 小写或大写(但我会有搜索引擎问题吗?)
如果我使用(2),我必须将products/文件夹中的所有文件重命名为小写。
- - 编辑 - -
当我使用时RewriteRule
,如果 url 是大写的,我会转移到域根目录,如果我使用CheckSpelling
然后CheckCaseOnly
一切正常。
我已经对此进行了测试, 我得到:
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>