2015-08-27 3 views
1

Итак, у меня есть правило перезаписи, которое необходимо из-за старого сайта, и у него есть некоторые изображения, связанные с другим сайтом, проблема в том, что я могу «вручную исправить URL-адрес, потому что есть много изображений.Правило перезаписи без учета регистра

Так что перед веб-сайт был размещен на Windows, и не было никаких проблем, если вы хотите связать образ как это:

http://www.example.com/Fder69.JPG и имя файла было «fder69.JPG» он сделал работу, теперь у меня есть переписать правило следующим образом:

RewriteRule^([^ /.] +. JPG) $/imgs/$ 1 [L, NC, R = 302], так что переписывает старые ссылки на новую структуру, но некоторые из них изображения, которые не имеют точного имени файла, не работают.

Есть ли способ сделать это? с чем-то вроде CheckSpelling Off или? могу ли я сделать recwrite cond, чтобы принять .JPG и .jpg, какие-нибудь советы?

ответ

0

Один из вариантов заключается в том, чтобы переименовать все файлы на все строчные буквы, что обычно приводит к более приятным URL-адресам, а затем перенаправляет любые запросы для версий в смешанном варианте на все строчные.

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

Один из способов, чтобы переименовать все файлы, будут генерировать кучу mv команд в сценарии оболочки, например:

find . | perl -ne 'chomp; print "mv \"", $_, "\" \"", lc $_, "\"\n";' > rename-files.sh 

Обратите внимание, что я не делаю никаких гарантий, что это будет не испортить все ваши файлы, но я думаю, что это право ...

перенаправление осуществляется с помощью «RewriteMap», которая является функцией, которая может быть применена на правой стороне в RewriteRule. Один из built-in mappings available - int:tolower, что позволяет вам:

# Alias the mapping function as "lc" 
RewriteMap lc int:tolower 
# Perform the substitution if the URL contains uppercase letters 
RewriteCond %{REQUEST_URI} [A-Z] 
# Issue a 301 redirect to the all-lowercase version 
RewriteRule /(.*) /${lc:$1} [R=permanent,L] 
Смежные вопросы