Mod rewrite Mod rewrite(大写)添加查询字符串

Mod rewrite Mod rewrite(大写)添加查询字符串,mod-rewrite,Mod Rewrite,我使用mod Rewrite将URL的一部分重写为查询参数 URL的格式如下 http://www.my_site.com/ABC 其中ABC是强制进入子目录中myindex.php的查询参数的位 My.htaccess具有以下功能: RewriteEngine on RewriteRule ^/?([a-zA-Z0-9]+)/?$ directory/index.php?Site=$1 [L] 当我有小写字母ABC时,例如: my_site.com/abc 浏览器URL保持不变,页面与

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

URL的格式如下

http://www.my_site.com/ABC
其中ABC是强制进入子目录中my
index.php
的查询参数的位

My
.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吗

进一步说明:我尝试了一个不同服务器的示例,它工作得非常好!如果有服务器设置可能会影响这一点,您有什么想法吗

感谢您的帮助

您是说[NC]nocase标志吗?这将使规则以不区分大小写的方式匹配。也就是说,它不在乎字母是大写还是小写

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

我想,你想把像/bigsall这样的URL重写成/directory/index.php?Site=bigsall?如果我是对的,那么问题在于程序,而不是URL重新映射。然而,在MySQL数据库中,当您获取查询
WHERE
值的查询字符串的值时,它是不区分大小写的匹配。请看图片:


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

我已经解决了这个问题——正如sidoh所说,还有一些事情正在发生

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

e、 g。 如果我在服务器上有一个目录ABC,那么使用我的mod_rewrite和www.domain.com/ABC将导致浏览器URL www.domain.com/ABC/Site=ABC-如果没有目录ABC,则一切正常,URL保持为www.domain.com/ABC(这是我想要的)

因为我在Linux上,所以ABC与ABC不同——这解释了这种行为明显的区分大小写的本质


感谢所有人的投入。

您是否尝试过重写到
/directory/index.php?Site=$1
而不是
directory/index.php?Site=$1
?没有影响。我仍然有一个类似于mysite/ABC/?Site=abcha的浏览器URL,您是否验证了这是实际运行的规则?尝试注释它并验证是否有更改。规则正在执行,因为它确实将我带到正确的页面,并完美地设置了正确的GET变量。对,我也怀疑这一点。不过,我认为可能值得验证的是,没有其他事情发生。此时,我将尝试验证它是否正在运行。这个规则在我看来是正确的——可能还有其他原因。我认为这不重要,因为正则表达式是不区分大小写的,对吗?@sidoh如果你想将/bigsall这样的URL重写为/directory/index.php?Site=bigsall,那么问题出在程序中。检查我的更新!否-这纯粹是修改完成后浏览器中显示的URL的差异-如果它的ABC I get/?site=ABC如果我使用ABC,我在URL中不会得到任何查询-但两者都完美地传递了get变量。@Nimur您真正想发生什么?