我正在使用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
参数中,但看起来很难看!
为什么案例会影响这一点,我可以将大小写保持原始网址吗?
进一步说明:我尝试了一个不同服务器的示例,它运行得很好!如果有可能影响此服务器设置的任何想法?
感谢您的帮助
答案 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
值时,它在不区分大小写的情况下匹配。看看图片:
您正在开发网站吗?如果有的话,那你使用的DBMS是什么?也许, MySQL ?