2015-02-24 2 views
0

я мой файл page1.php, расположенный внутрикак сделать апачский размещенный URL сайта запрашивает нечувствительно к регистру

/public_html/mypages/page1.php

если пользователь запрашивает www.myurl.com/Mypages/Page1.php возвращается file not found

как я могу гарантировать, что каждый каждый запрос обрабатывается независимо от случая

Я использую сервер godaddy linux

со своей страницы поддержки

https://support.godaddy.com/help/article/899/how-do-i-use-mod_rewrite

Я пришел, чтобы узнать, что это может быть сделано из .htaccess

поэтому я добавил .htaccess к /public_html/mypages/

http://www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/

здесь содержание мой файл .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 -> "file not found error"

ответ

0

Если вы можете загрузить модуль mod_speling. используйте это:

RewriteEngine On 
AllowOverride All 
CheckSpelling on 

В противном случае; если вы не можете (не иметь контроля над ней) заставляют строчную URL-адреса с mod_rewrite (как вы писали на ваш вопрос)

RewriteEngine On 
RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

Поскольку ваш .htaccess был внутри папки и теперь находится в корневом каталоге документов (public_html) попытайтесь добавить свой переписать. Возможно, это была просто проблема, потому что это было не в корневом документе.

+0

Я попытался добавить CheckSpelling на .but, я все еще получаю ту же ошибку внутреннего сервера – abhi

+0

@robert ничего? –

+0

Я все еще получаю ту же ошибку. – abhi

0

Чтобы решить эту проблему, я изменил все свои имена файлов на нижний регистр и добавил следующее в .htaccess. (Как это было предложено here)

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] 

Сейчас я не вижу каких-либо ошибок, и он принимает запросы независимо от случая.

Смежные вопросы