不确定这是否是处理问题的明智方法,这是......
我有一堆用户目录构成了他们网址的一部分,例如
www.mysite.com/users/USERDIR
当我创建网站时(从那时起),用户dirs是使用大写创建的。我希望我没有,但它已经完成了。因此,如果有人在www.mysite.com/users/userdir中输入 - 它找不到该目录 - 它必须是像www.mysite.com/users/USERDIR这样的首都。
我想知道......
a)有没有办法告诉htaccess“在查找网址时忽略这种情况?”
或
b)有没有办法在htaccess中处理这个问题,这样无论用户使用什么情况,我的服务器都会将USERDIR转换为大写字母?我需要考虑到有些人可能会输入www.mysite.com/users/USERDIR/index.php和www.mysite.com/users/USERDIR/并带有一个斜杠。
我发现一些代码可以从大写字母转换为大写字母(下图),但有没有办法说“只有在mysite.com/users/之后才能执行此操作,直到结束或下一个斜杠为止一个进入“?
注意 - 下面的内容与我之后的情况相反 - 我还没有重新编码将其从低位转换为高位。
RewriteEngine On
RewriteBase /
# If there are caps, set HASCAPS to true and skip next rule
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]
# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] - [S=28]
# Replace single occurance of CAP with cap, then process next Rule.
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2
# If there are any uppercase letters, restart at very first RewriteRule in file.
RewriteRule [A-Z] - [N]
RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]
谢谢你看看!
答案 0 :(得分:3)
a) is there a way to tell htaccess "ignore the case when looking for the url?"
是的。在规则中使用NC
标志来进行大小写忽略匹配。
no matter what case the user uses, my server will ALWAYS convert the USERDIR to capitals?
如果您可以访问Apache配置,那么在Apache配置中添加此行要简单得多:
RewriteMap uc int:toupper
然后在.htaccess中使用此规则将您的URI转换为upper case
:
RewriteRule ^(users)/(.*?[a-z]+.*)$ /$1/${uc:$2} [R,L]