mod_rewrite: перенаправление на lowercase-URI

Николай В.
На сайте с 07.09.2006
Offline
62
1951

После вчерашних бурлений по поводу WWDC голова не соображает, так что прошу помощи с перенаправлением:

http://mysite.com/StUpiDeMoStYlE => http://mysite.com/stupidemostyle

т.е. надо перевести адрес в нижний регистр.

Николай В. добавил 09.06.2009 в 11:22

Погуглил, нашел решение с RewriteMap:


RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L]

Это хорошо, но мне бы хотелось вариант, работающий в контексте .htaccess.

=DEREK=
На сайте с 07.05.2009
Offline
130
#1

Рерайтинг производиться модулем mod_rewrite, настройки которого задаються в именно .htaccess. Все директивы (RewriteCond, RewriteMap) относяться как раз к этому модулю. Так что можете смело юзать RewriteMap. Это не какой-то отдельный инструмент, а просто одна из директив того же модуля.

Еще вариант с редиректом всем урлов в которых есть Большие буквы (верхний регистр) на спец php файл, в котором уже посылаеться заголовок с этим же адресом в нижнем регистре.

Но мне кажеться предпочтительней первый вариант с map.

Показываю фокусы с Drupal (/ru/forum/526565)
Николай В.
На сайте с 07.09.2006
Offline
62
#2

А вам не кажется, что RewriteMap можно использовать только в контексте конфигов сервера/виртуальных хостов?

На самом деле я пришел к выводу, что в .htaccess это не сделать, и засунул перенаправление в бутстрап-скрипт.

[Удален]
#3
Николай В.:
А вам не кажется, что RewriteMap можно использовать только в контексте конфигов сервера/виртуальных хостов?

На самом деле я пришел к выводу, что в .htaccess это не сделать, и засунул перенаправление в бутстрап-скрипт.

Вы пришли к неправильному выводу.

RewriteMap это часть настроек Mod_rewrite. Совершенно замечательно используется в .htaccess, если иное не запрещено директивами AllowOverride

=DEREK=
На сайте с 07.05.2009
Offline
130
#4

RewriteMap будет работать везде где установлен mod_rewrite, а это подавляющее большинство хостингов.

СКОРПИОН
На сайте с 05.01.2006
Offline
120
#5
Николай В.:
http://mysite.com/StUpiDeMoStYlE => http://mysite.com/stupidemostyle

т.е. надо перевести адрес в нижний регистр.

И получите (для приведённого примера) 16384 url-адреса, ведущих на страницу http://mysite.com/stupidemostyle. Чтобы заспамить и нарушить индексацию (а то и выкинуть такой сайт из индекса ПС) много ума не понадобится...

• Контекстные ссылки с внутренних страниц навсегда (/ru/forum/370882) • Качественные сайты для заработка на контекстной рекламе и ссылках
Николай В.
На сайте с 07.09.2006
Offline
62
#6

В мануале черном по белому написано Context: server config, virtual host. Мой локальный апач ругается internal server error-ом.

СКОРПИОН:
И получите (для приведённого примера) 16384 url-адреса, ведущих на страницу http://mysite.com/stupidemostyle. Чтобы заспамить и нарушить индексацию (а то и выкинуть такой сайт из индекса ПС) много ума не понадобится...

И разве именно поэтому не надо перенаправить все эти адреса 301-редиректом на один единственно правильный?

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