Php 如何使apache托管的网站url请求不区分大小写

Php 如何使apache托管的网站url请求不区分大小写,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我的page1.php文件位于 /public\u html/mypages/page1.php 如果用户请求www.myurl.com/Mypages/Page1.php返回未找到文件 我如何确保每个请求都得到处理,而不考虑具体情况 我正在使用godaddy linux服务器 从他们的支持页面 我知道可以从.htaccess 因此,我在/public\u html/mypages/中添加了.htaccess 这是我的.htaccess文件的内容 RewriteEngine On Rewri

我的page1.php文件位于

/public\u html/mypages/page1.php

如果用户请求
www.myurl.com/Mypages/Page1.php
返回
未找到文件

我如何确保每个请求都得到处理,而不考虑具体情况

我正在使用godaddy linux服务器

从他们的支持页面

我知道可以从
.htaccess

因此,我在
/public\u html/mypages/
中添加了
.htaccess

这是我的.htaccess文件的内容

RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
在这之后,当我试图访问任何文件
www.myurl.com/Mypages/Page1.php
时,它给出了内部服务器错误。请帮我解决这个问题

我还尝试添加

<IfModule mod_speling.c>
CheckSpelling On
CheckCaseOnly On
</IfModule>

拼写检查
只检查箱子
现在我没有得到内部服务器错误,但我得到了

“找不到文件错误”

www.myurl.com/mypages/page1.php-->工作正常。 但是
www.myurl.com/mypages/Page1.php-->“未找到文件错误”

如果您可以加载mod_speling模块。使用以下命令:

RewriteEngine On
AllowOverride All
CheckSpelling on
否则;如果你不能(你不能控制它)强制使用mod_重写小写URL(就像你在问题上写的那样)


由于.htaccess位于文件夹中,现在位于文档根目录(public_html)中,请尝试添加重写。可能这只是一个问题,因为它不在文档根目录中。

为了解决这个问题,我将所有文件名更改为小写,并将以下内容添加到.htaccess中。(如建议)


现在我看不到任何错误,它会接受请求,不管情况如何。

我尝试在上添加检查拼写。但我仍然收到相同的内部服务器错误。首先,请将
.htaccess
移动到
public\u html
并检查页面。如果出现相同错误,请从
.htaccess
中删除内容,然后再次检查页面。如果错误仍然存在。。。您的页面有一个错误。我将.htaccess移到了public_html,我可以看到相同的内部服务器错误。然后,我删除了.htaccess,只有在案例不匹配时才会出现错误。www.myurl.com/mypages/page1.php-->工作正常。但是www.myurl.com/mypages/Page1.php-->“文件未找到错误”请不要提供“仅代码”答案。请添加解释和依赖项。我知道发生了什么。基于本文,Godaddy没有加载mod_拼写模块。因此,您必须使用mod_rewrite强制使用小写URL。我会更新我的答案
RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
RewriteCond %{REQUEST_URI} !([A-Z]+)
RewriteRule .* - [S=27]
RewriteRule ^(.*)A(.*)$ http://%{HTTP_HOST}/$1a$2 [R=301,L]
RewriteRule ^(.*)B(.*)$ http://%{HTTP_HOST}/$1b$2 [R=301,L]
RewriteRule ^(.*)C(.*)$ http://%{HTTP_HOST}/$1c$2 [R=301,L]
RewriteRule ^(.*)D(.*)$ http://%{HTTP_HOST}/$1d$2 [R=301,L]
RewriteRule ^(.*)E(.*)$ http://%{HTTP_HOST}/$1e$2 [R=301,L]
RewriteRule ^(.*)F(.*)$ http://%{HTTP_HOST}/$1f$2 [R=301,L]
RewriteRule ^(.*)G(.*)$ http://%{HTTP_HOST}/$1g$2 [R=301,L]
RewriteRule ^(.*)H(.*)$ http://%{HTTP_HOST}/$1h$2 [R=301,L]
RewriteRule ^(.*)I(.*)$ http://%{HTTP_HOST}/$1i$2 [R=301,L]
RewriteRule ^(.*)J(.*)$ http://%{HTTP_HOST}/$1j$2 [R=301,L]
RewriteRule ^(.*)K(.*)$ http://%{HTTP_HOST}/$1k$2 [R=301,L]
RewriteRule ^(.*)L(.*)$ http://%{HTTP_HOST}/$1l$2 [R=301,L]
RewriteRule ^(.*)M(.*)$ http://%{HTTP_HOST}/$1m$2 [R=301,L]
RewriteRule ^(.*)N(.*)$ http://%{HTTP_HOST}/$1n$2 [R=301,L]
RewriteRule ^(.*)O(.*)$ http://%{HTTP_HOST}/$1o$2 [R=301,L]
RewriteRule ^(.*)P(.*)$ http://%{HTTP_HOST}/$1p$2 [R=301,L]
RewriteRule ^(.*)Q(.*)$ http://%{HTTP_HOST}/$1q$2 [R=301,L]
RewriteRule ^(.*)R(.*)$ http://%{HTTP_HOST}/$1r$2 [R=301,L]
RewriteRule ^(.*)S(.*)$ http://%{HTTP_HOST}/$1s$2 [R=301,L]
RewriteRule ^(.*)T(.*)$ http://%{HTTP_HOST}/$1t$2 [R=301,L]
RewriteRule ^(.*)U(.*)$ http://%{HTTP_HOST}/$1u$2 [R=301,L]
RewriteRule ^(.*)V(.*)$ http://%{HTTP_HOST}/$1v$2 [R=301,L]
RewriteRule ^(.*)W(.*)$ http://%{HTTP_HOST}/$1w$2 [R=301,L]
RewriteRule ^(.*)X(.*)$ http://%{HTTP_HOST}/$1x$2 [R=301,L]
RewriteRule ^(.*)Y(.*)$ http://%{HTTP_HOST}/$1y$2 [R=301,L]
RewriteRule ^(.*)Z(.*)$ http://%{HTTP_HOST}/$1z$2 [R=301,L]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]