簡體   English   中英

使用htaccess將URL的最后一部分更改為大寫?

[英]Changing last part of URL to be uppercase using htaccess?

不確定這是否是解決問題的明智方法,即...

我有一堆用戶目錄構成了他們的網址的一部分,例如

www.mysite.com/users/USERDIR

當我創建站點(以及此后)時,使用目錄創建用戶目錄。 我希望沒有,但是已經完成了。 因此,如果有人輸入www.mysite.com/users/userdir-它找不到該目錄-則必須使用大寫字母,例如www.mysite.com/users/USERDIR。

我在想....

a)有沒有辦法告訴htaccess“在查找URL時忽略大小寫?”

要么

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]

謝謝參觀!

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 config,則在Apache config中添加以下行會更簡單:

RewriteMap uc int:toupper

然后在您的.htaccess中使用此規則將URI轉換為upper case

RewriteRule ^(users)/(.*?[a-z]+.*)$ /$1/${uc:$2} [R,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM