перенаправление URL-адреса htaccess 301 в нижний регистр с исключениями

#php #regex #.htaccess #redirect

#php #регулярное выражение #.htaccess #перенаправление

Вопрос:

Я хочу изменить все мои URL-адреса на нижний регистр, используя RewriteMap lc int:tolower в моем конфигурационном файле Apache, в моем htaccess есть это регулярное выражение:

 RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]
  

.. и работает безупречно! Но у меня есть библиотеки (с файлами) и каталоги, которые я не хочу изменять на нижний регистр (например: «Изображения» со всеми подкаталогами или библиотеками: «Functions/Liberties/Image/Resize.php «) … как это сделать?
Я пытался с RewriteRule ^(Images) - [NC,QSA,L] , но не принимаю это… есть идеи, как сделать это исключение?

Заранее благодарю вас и прошу прощения за мой английский!

Комментарии:

1. Добавьте больше секунд перезаписи, которые проверяют, что REQUEST_URI не является одним из тех, которые вы не хотите переписывать.

2. Возможно, у вас есть больше правил ниже этого. Лучше использовать THE_REQUEST в RewriteCond , чтобы исключить совпадающие шаблоны.

Ответ №1:

Сначала вы можете отключить список каталогов, используя -indexes и теперь, если запрошенный URI является существующим каталогом или файлом, вы можете пропустить правило перезаписи, используя !-d и !-f параметры, подобные приведенным ниже:

 Options -Indexes

RewriteEngine On
RewriteCond %{REQUEST_URI} [A-Z]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]
  

Ответ №2:

Спасибо вам всем… я исправляю это следующим образом:

 RewriteRule ^Admin/ - [L]
RewriteRule ^Apps/ - [L]
RewriteRule ^Bank/ - [L]
RewriteRule ^Downloads/ - [L]
RewriteRule ^Functions/ - [L]
RewriteRule ^Images/ - [L]
RewriteRule ^Pages/ - [L]
RewriteRule ^Scripts/ - [L]
RewriteRule ^Styles/ - [L]
  

… и я поместил это перед:

 RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]
  

Я надеюсь, что это правильное решение для меня и моего дела. Еще раз спасибо!

Комментарии:

1. При этом всякий раз, когда вы добавляете новый файл или папку, вам придется редактировать. снова htaccess.