如何将不区分大小写的 mod_rewrite 重定向到相同的 URL(mod 大小写)?

如何将不区分大小写的 mod_rewrite 重定向到相同的 URL(mod 大小写)?

我使用区分大小写的 Web 应用程序来提供一些将要打印的 URL,因此我们希望用户输入时不区分大小写。如何告诉用户mod_rewrite重定向到正确大小写的 URL,而[NC]不是同时重定向到大小写完全一致的 URL 并创建循环?

答案1

这取决于你的 Web 应用程序中的几个因素,但你可以:

  1. 使用 mod_speling 强制文件名和目录正确大写。这需要“真实”文件名。
  2. 使用 RewriteMap 重写 url(如图所示):

在 .htaccess 中:

RewriteEngine on
RewriteBase /
RewriteMap insensitive tolower:
RewriteRule ^[\/]*(.*)$ /${insensitive:$1} [R,L]

答案2

首先,如果您可以使用 mod_speling,那是最简单的,但这需要实际的文件,而不是以某种方式隐藏在应用程序内部的东西。

只需设置一个条件,如果请求的大小写正确,则重写规则不会发生,如下所示:

RewriteCond %{REQUEST_URI} !^/Your/File$
RewriteRule ^/your/file$ /Your/File [NC,R]

答案3

将 Samba 共享挂载到 /var/www,并将 Samba 共享文件夹视为您的 wwwroot ;-))

相关内容