Как мне сделать нечувствительный к регистру редирект mod_rewrite на тот же URL (мод кейс)?

Я использую чувствительное к регистру веб-приложение для обслуживания нескольких URL-адресов, которые будут напечатаны, поэтому мы ожидаем, что пользователи напечатают их с неточным регистром. Как мне сказать mod_rewrite перенаправить на правильный URL-адрес дела, как в [NC] без перенаправления на URL с точным регистром и создания цикла?

3 ответа

Решение

Это зависит от нескольких вещей в вашем веб-приложении, но вы можете:

  1. Используйте mod_speling для принудительного ввода правильных заглавных букв имен файлов и каталогов. Это требует "настоящих" имен файлов.
  2. Используйте RewriteMap, чтобы переписать URL ( как показано здесь):

В.htaccess:

RewriteEngine on
RewriteBase /
RewriteMap insensitive tolower:
RewriteRule ^[\/]*(.*)$ /${insensitive:$1} [R,L]

Во-первых, если вы можете использовать mod_speling, это проще всего, но для этого нужны реальные файлы, а не какие-то вещи, скрывающиеся внутри приложения.

Просто установите условие, чтобы rewriterule не происходило, если запрос правильно прописан, например:

RewriteCond %{REQUEST_URI} !^/Your/File$
RewriteRule ^/your/file$ /Your/File [NC,R]

Смонтируйте общий ресурс Samba в /var/www и считайте папку Samba-share своим wwwroot;-))

Другие вопросы по тегам