0

我已经阅读了这个线程,该方法实际上将获取我网站上的任何 URL 并将其转换为小写。我打算然后使用它,并根据需要修改它,以确保 URL 的最后一部分不会改变(所以我的 PHP Get 变量可以保留,但它们应该是,但任何目录都是在服务器端变成小写)。

不幸的是,它会产生 500 内部服务器错误。

所以有一两个例子:

www.domain.com/FirstDirectory1/ThisDirectory2/page.php?var=sdmkfsDFLMSD

变成

www.domain.com/firstdirectory1/thisdirectory2/page.php?var=sdmkfsDFLMSD

或者

www.Domain.com/firstdirectory1/ThisDireCTory2/Page.php?var=sdmkfsDFLMSD

变成:

www.domain.com/firstdirectory1/thisdirectory2/Page.php?var=sdmkfsDFLMSD

4

1 回答 1

0

首先,您需要tolower通过将此指令添加到您的<virtualhost>配置(而不是.htaccess文件)来在您的上下文中包含外部函数:

RewriteMap lc int:tolower

然后在你的 .htaccess

   RewriteEngine On
   RewriteCond %{REQUEST_URI} [A-Z].+/.+\.php
   RewriteRule (.+)(/.+\.php)$ ${lc:$1}$2 [NC,R=301,L]

请注意,Apache 区分大小写,因此 example.com/Directory/ 和 example.com/directory/ 指向不同的位置,如果您有一个名为 Dir/ 的目录,使用上述指令将导致 404 错误。如果你想让它不区分大小写,通过在 htaccess 顶部添加这个指令来启用 CheckSpelling 模块:

CheckSpelling On
于 2013-04-22T23:50:09.373 回答