Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess URL为小写_.htaccess_Url Rewriting_Lowercase - Fatal编程技术网

.htaccess URL为小写

.htaccess URL为小写,.htaccess,url-rewriting,lowercase,.htaccess,Url Rewriting,Lowercase,如何更改.htaccess文件的以下片段以实现: 现在,如果它重写,则会将用户从带到: domain.com/TEST - domain.com/test domain.com/subdir/TEST - domain.com/test 所需的行为是: 当网页的索引位于'subdir'目录下,而不是直接位于domain.com下时,就会发生不必要的行为,如上面的第一个示例所示 # URL to lowercase # If there are caps, set HASCAPS to true

如何更改.htaccess文件的以下片段以实现:

现在,如果它重写,则会将用户从带到:

domain.com/TEST - domain.com/test
domain.com/subdir/TEST - domain.com/test
所需的行为是:

当网页的索引位于'subdir'目录下,而不是直接位于domain.com下时,就会发生不必要的行为,如上面的第一个示例所示

# URL to lowercase
# 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]

请删除
/subdir
中存在的
.htaccess
,因为您的规则
/$
将从输入URL中删除
subdir
,因为前导的
/
使其成为绝对URL。从root
.htaccess
,规则将保持URL不变(更改大小写除外)


或者,如果您有任何特定于子目录的规则,并且希望保留您的
/subdir/.htaccess
,只需将其规则更改为
RewriteRule^(.*)$$1[R=301,L]

解释:“当网页索引位于'subdir'目录中时”,如果我在域的子目录中,它将重定向回域,并发送一个目录。我想这一行应该负责,但需要帮助修改它
RewriteRule^(.*)/$1[R=301,L]
-参见第一个示例,您是否也在子目录中保留了
.htaccess
?此外,对几乎任何文件使用“索引”一词都是不正确的,因为它指的是
/
之类的位置或
subdir/index.php等目录中的登录页。htaccess是递归的,不需要将其保留在子目录中。我以自己的方式使用“索引”,但这不是问题所在。我知道这一点。我问您是否在subdir中有它,因为只有这样您的规则
/$
才会从URL中删除
subdir
。从根本上说,它会保持你的URL不变。该死的,我肯定是在测试这个解决方案,但没有工作。使用您的替代解决方案(这正是我一直在寻找的)很有效。Thnx!
# URL to lowercase
# 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]