htaccess:在RewriteRule中忽略大小写?

时间:2014-08-12 19:21:59

标签: apache .htaccess

我试图重写这两个网址

domain.com/test
domain.com/TEST

到这个

domain.com/test.php

这是我目前的.htaccess代码:

Options +FollowSymlinks -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(test|TEST)($|/$) /test.php

这适用于/test网址,但不适用于/TEST。我做错了什么?

2 个答案:

答案 0 :(得分:2)

使用[NC]标志会使RewriteRule以不区分大小写的方式匹配。也就是说,它不关心字母在匹配的URI中是以大写形式还是小写形式出现。

您必须在重写

中添加[NC]作为后缀

答案 1 :(得分:0)

Prashant Thakre关于[NC]标志的评论是正确的。下面的代码在忽略大小写的同时查找/ test并设置永久重定向标志。

RewriteEngine On
RewriteCond %{REQUEST_URI} /test [NC]
RewriteRule .* http://example.com/test.php [R=301,L]

这是永久重定向的另一个选项,但它区分大小写,因此使用多行代码来匹配大小写和大写。

RewriteEngine On
Redirect 301 /test http://example.com/test.php
Redirect 301 /TEST http://example.com/test.php

您可以在http://httpd.apache.org/docs/current/mod/mod_rewrite.html

找到有关mod_rewrite选项的更多信息

请记住在测试mod重写时始终清除浏览器缓存。当浏览器缓存页面时,即使重写工作正常,也会忽略重写。