我继承了一个相当可怕的.htaccess文件,该文件充满了以前的规则。我想要做的是简单地将每个URL小写为SEO原因。目前,Google网站管理员抱怨重复的网页。例如: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文件中有许多规则之一,因此该规则无效。我可以添加上述规则并确保它覆盖任何其他规则吗?
答案 0 :(得分:8)
您可以将它添加到htaccess文件中的任何其他规则之上,但重写映射定义必须位于您的vhost配置中,因此在vhost中:
RewriteEngine On
RewriteMap lowercase int:tolower
在你的htaccess文件的最顶层:
RewriteCond $1 [A-Z]
RewriteRule ^(.*)$ /${lowercase:$1} [R=301,L]
(请注意,您不需要领先斜杠)
答案 1 :(得分:1)
我不希望将其应用于现有文件和文件夹名称,因此我更改了Jon Lin's excellent solution to:的.htaccess部分
RewriteCond $1 [A-Z]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /${lowercase:$1} [R=301,L]