Php htaccess从大写URL到小写URL
在一个网站上有文件夹产品,里面有一些大写的php文件 示例:www.Example.com/products/BIT-Defendar.php 现在,这个URL已经存在了很多年,并且遍布搜索引擎。这是产品经理的一个错误 但我想解决这个问题,我只需要小写的URL 这能解决我的问题吗<代码>检查拼写在Php htaccess从大写URL到小写URL,php,apache,.htaccess,seo,Php,Apache,.htaccess,Seo,在一个网站上有文件夹产品,里面有一些大写的php文件 示例:www.Example.com/products/BIT-Defendar.php 现在,这个URL已经存在了很多年,并且遍布搜索引擎。这是产品经理的一个错误 但我想解决这个问题,我只需要小写的URL 这能解决我的问题吗检查拼写在上仅检查大小写在(1) 和与上述和有什么不同:(2) 如果我使用(1),那么我请求url小写或大写(但我会有搜索引擎问题吗?) 如果我使用(2)我必须将产品/文件夹中的所有文件重命名为小写 ----编辑---
上仅检查大小写在
(1)
和与上述和有什么不同:(2)
如果我使用(1),那么我请求url小写或大写(但我会有搜索引擎问题吗?)
如果我使用(2)我必须将产品/文件夹中的所有文件重命名为小写
----编辑---
当我使用RewriteRule
时,如果url为大写,我会被转移到域根目录,如果我使用CheckSpelling
和checkcaseonloy
则一切正常
我用测试了,我得到:
RewriteCond %{REQUEST_URI} [A-Z]
-这一条件得到满足
-满足此规则后,新url为${tolowercase:products/BIT Defendar.php}
-由于重写规则选项中的R,测试将停止。将使用状态代码301进行重定向
我在httpd.conf中的设置
:
<VirtualHost *:80>
RewriteMap tolowercase int:tolower
</VirtualHost>
重写映射到LowerCase int:tolower
使用CheckSpelling和/或CheckCaseOnly指令可能会导致意外结果,如底部所述:
我认为允许apache为您进行更正是不明智的,因为您依赖apache为每次查找搜索目录和文件,而使用小写映射,它让您完全控制并创建严格的标准
我建议添加一个标志[R=301]
,它将通知搜索引擎这是新文件,并且您不会遇到任何与搜索引擎相关的问题:
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1} [R=301,L]
您必须重命名您的文件,因为它们将不再被识别,但您可以编写一个简单的脚本来扫描所有文件,并将它们重命名为小写。我不明白您所指的是什么不希望的结果。如果你认为在线上提到了启用DAV的目录,我就不用了。问题是:使用这种重写,当url(www.example.com/products/NEW defender.php)为大写时,我会被重定向到主页。你的代码使我的整个网站崩溃了一秒钟,直到我将其删除。你可能需要将用户重定向到小写url,而不是重写。搜索引擎可以看到重定向,而不是重写。当我使用RewriteRule时,如果url是大写的,我会被转移到域根目录,如果我使用CheckSpelling和CheckCaseOnly,那么一切都很好。
<VirtualHost *:80>
RewriteMap tolowercase int:tolower
</VirtualHost>
1, performance issues
2, some files might be skipped
3, some files might be misinterpreted
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1} [R=301,L]