php - htaccess 大写 URL 到小写

标签 php apache .htaccess seo

在一个网站上有一个文件夹products/,里面是带有一些大写字符的 php 文件。

示例: www.example.com/products/BIT-Defendar.php

现在这个 url 已经存在多年并且遍布搜索引擎。这是产品经理的错误。

但我想解决这个问题,我只需要小写的 URL。

这会解决我的问题吗? CheckSpelling 开启 CheckCaseOnly 开启 (1)

与上面提到的有什么不同并且:(2)

RewriteMap tolowercase int:tolower 
RewriteRule ^(.*)$ ${tolowercase:$1}

如果我使用 (1) 那么所有的工作都会枯萎我请求小写或大写的 url (但我会遇到搜索引擎问题吗?)

如果我使用 (2),我必须将 products/ 文件夹内的所有文件重命名为小写。

----编辑----

当我使用 RewriteRule 时,如果 url 是大写的,我会被转移到域根,如果我使用 CheckSpellingCheckCaseOnly 那么一切都很好。

我用测试了this我得到:

RewriteCond %{REQUEST_URI} [A-Z]    

-满足此条件

RewriteRule (.*) ${tolowercase:$1} [R=301,L]    

- 符合此规则,新网址为 http://www.example.com/ ${tolowercase:products/BIT-Defendar.php}

- 由于 RewriteRule 选项中的 R,测试已停止。将使用状态代码 301 进行重定向

我在 httpd.conf 中的设置:

<VirtualHost *:80>
 RewriteMap tolowercase int:tolower
</VirtualHost>

最佳答案

使用 CheckSpelling 和/或 CheckCaseOnly 指令可能会导致意外结果,如底部所述 here :

1, performance issues
2, some files might be skipped
3, some files might be misinterpreted

我认为允许 apache 为您进行更正是不明智的,因为您依赖 apache 来搜索目录和文件以进行每次查找,而对于小写映射,它可以让您完全控制并创建严格的标准.

我建议添加一个标记 [R=301],它会通知搜索引擎这是新文件,您不会遇到任何与搜索引擎相关的问题:

RewriteMap tolowercase int:tolower 
RewriteRule ^(.*)$ ${tolowercase:$1} [R=301,L]

您将不得不重命名您的文件,因为它们将不再被识别,但您可以编写一个简单的脚本来扫描所有文件,并将它们重命名为小写。

关于php - htaccess 大写 URL 到小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651395/

相关文章:

python - 在 Ubuntu 14.04 上使用 Apache2 和 mod_wsgi 服务 Django 1.8 应用程序时出错

java - 使用 Apache Velocity 生成 C/C++ 语言文件

php - 给定特定 url 参数时强制使用非 SSL

php - Codeigniter htaccess 不工作

php - Laravel 关系列 'id' in where 子句有歧义

php - mysql_insert_id 使用安全吗?

php - 日期比较查询php sql

php - 如何更改XAMPP Web服务器根文件?

php - 重定向到请求子文件夹的 index.php

php - 使用 CodeIgniter 从 MySQL 中检索不同的结果