我使用区分大小写的 Web 应用程序来提供一些将要打印的 URL,因此我们希望用户输入时不区分大小写。如何告诉用户mod_rewrite
重定向到正确大小写的 URL,而[NC]
不是同时重定向到大小写完全一致的 URL 并创建循环?
答案1
这取决于你的 Web 应用程序中的几个因素,但你可以:
- 使用 mod_speling 强制文件名和目录正确大写。这需要“真实”文件名。
- 使用 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 ;-))