4

我继承了一个看起来相当吓人的 .htaccess 文件,其中充满了以前的规则。我想要做的只是出于 SEO 的原因将每个 URL 都设为小写。目前谷歌网站管理员正在抱怨重复页面。例如:www.example.com/AbC1.php 与 www.example.com/abc1.php 内容相同。为了解决这个问题,我将以下几行放入我的 vhosts.conf

#Make URL's lower case
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond \$1 [A-Z]
RewriteRule ^/(.*)$ /\${lowercase:\$1} [R=301,L]

但是由于我的 .htaccess 文件中有许多规则之一,这个规则不起作用。我可以添加上述规则并确保它覆盖任何其他规则吗?

4

2 回答 2

9

您可以将其添加到 htaccess 文件中的任何其他规则之上,但重写映射定义必须在您的 vhost 配置中,因此在 vhost 中:

RewriteEngine On
RewriteMap lowercase int:tolower

在您的 htaccess 文件的最顶部:

RewriteCond $1 [A-Z]
RewriteRule ^(.*)$ /${lowercase:$1} [R=301,L]

(请注意,您不需要前导斜杠)

于 2013-09-27T15:26:52.707 回答
1

我不希望这适用于现有文件和文件夹名称,因此我将Jon Lin 出色解决方案的 .htaccess 部分更改为:

RewriteCond $1 [A-Z]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /${lowercase:$1} [R=301,L]
于 2015-02-11T20:24:09.777 回答