Apache mod_speling переписывает все URL-адреса в нижний регистр

Я унаследовал веб-сайт, где URL-адреса написаны заглавными буквами, но файловая структура на сервере написана строчными буквами. Это не было проблемой, пока сайт не был переведен на Apache.

Я не хочу перенаправлять существующие страницы на структуру нижнего регистра, потому что сайт устарел и хорошо ранжируется в Google и Bing.

Я внедрил mod_speling в свой .htaccess:

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

Однако он переписывает все URL-адреса в нижний регистр, что в глазах Google является новым URL-адресом.

Есть ли способ обрабатывать все URL-адреса как нечувствительные к регистру, сохраняя при этом исходный URL-адрес?

Например: domain.com/Folder1/folder.htm разрешится в том же месте, что и domain.com/folder1/Folder.htm?

Apache-2.4 переписать веб-сайт

PublicDisplayName

1 ответ
1

Вы могли бы использовать mod_rewrite чтобы переписать все ваши запросы в нижний регистр. Это может выглядеть так:

RewriteEngine On
RewriteMap lc int:tolower
RewriteRule ^(.*) ${lc:$1}

Учитывая эти файлы на диске:

$ ls
file1.txt  file2.txt  file3.txt  index.html

И эти ссылки в index.html:

<ul>
  <li><a href="File1.txt">File1</a></li>
  <li><a href="FILE2.txt">FILE2</a></li>
  <li><a href="file3.txt">file3</a></li>
</ul>

Показанная конфигурация перезаписи позволяет всем трем ссылкам получить ожидаемый файл. Перезапись не создает никакого перенаправления клиенту, поэтому клиент (например, Google) не знает о перезаписи.

жаворонки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *