0

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

URL 的格式为

http://www.my_site.com/ABC

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

.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参数中,但看起来很难看!

为什么大小写会影响这一点,我可以让大写和小写都保持原始 URL?

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

感谢您的帮助

4

2 回答 2

0

我已经解决了 - 正如 sidoh 所说的那样,正在发生其他事情。

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

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

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

感谢大家的投入。

于 2013-04-08T18:47:05.743 回答
-1

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

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

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

用户名 = 'nAmE 不区分大小写'

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

于 2013-04-06T18:04:32.437 回答