使用大写的Mod重写添加查询字符串

时间:2013-04-06 17:13:07

标签: mod-rewrite

我正在使用mod Rewrite将部分URL重写为查询参数

网址的格式为

http://www.my_site.com/ABC

其中ABC是强制进入子目录中index.php的查询参数的位

我的.htaccess有以下内容:

RewriteEngine on
RewriteRule ^/?([a-zA-Z0-9]+)/?$ directory/index.php?Site=$1 [L]

当我有一个小写的ABC时,例如:

my_site.com/abc 

浏览器URL保持不变,页面与在GET中传递的abc完美配合。

然而,当ABC是大写的时候,例如:

my_site.com/ABC 

浏览器中的URL变为:

my_site.com/ABC/?Site=ABC

它工作正常,ABC仍在GET参数中,但看起来很难看!

为什么案例会影响这一点,我可以将大小写保持原始网址吗?

进一步说明:我尝试了一个不同服务器的示例,它运行得很好!如果有可能影响此服务器设置的任何想法?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

我已经解决了 - 因为sidoh说了其他的事情。

如果我的服务器上有一个与参数同名的目录,则mod_rewrite会将查询添加到URL中。

e.g。 如果我在服务器上有一个目录ABC,那么在www.domain.com/ABC上使用我的mod_rewrite会导致浏览器URL www.domain.com/ABC/Site=ABC - 如果没有目录ABC一切正常并且URL仍然是www.domain.com/ABC(这就是我想要的)。

因为我在Linux上ABC与abc不同 - 这解释了行为的明显区分大小写的性质。

感谢所有人的投入。

答案 1 :(得分:-1)

你的意思是, [NC] nocase标志?这将使规则以不区分大小写的方式匹配。意思是,它不关心字母是大写还是小写。

RewriteRule ^([a-zA-Z0-9]+)/?$ /directory/index.php?Site=$1 [NC]

我想,您想将 / bigSMALL 等网址重写为 /directory/index.php?Site=BIGsmall ?如果我是对的,那么问题出在程序中而不是URL重映射中。但是,在 MySQL 数据库中,当您获取查询字符串的值以查询WHERE值时,它在不区分大小写的情况下匹配。看看图片:

username = 'nAmE is case-insensitive'

您正在开发网站吗?如果有的话,那你使用的DBMS是什么?也许, MySQL