Как переписать URL в нижний регистр и НЕ делать двойной удар по серверу? - PullRequest
2 голосов
/ 05 февраля 2012

Я использую ColdFusion 8.0.1 и jQuery 1.4.3.

Я разрабатываю кусок кода, который делает и Ajax-запрос к CFC с использованием jQuery. Я заметил, что каждый сделанный мною Ajax-запрос фактически отправлялся на сервер дважды. (Я наблюдал это в Firebug.) Первое попадание было вызвано строчными буквами. Второй удар, который был теперь в нижнем регистре, потерпел неудачу из-за переписывания.

Я спросил моего босса об этом, и он указал мне на некоторый код в файле application.cfm, который принудительно заставил URL-адрес вводиться в нижнем регистре, а затем выполнил перенаправление 301 с использованием CFHEADER. Я прокомментировал этот код и мой Ajax-запрос работал нормально.

Тем не менее, для целей SEO нам нужно принудительно заставить все запросы в нижнем регистре, используя перезапись в файле application.cfm или в файле htaccess.

Я понимаю, что гораздо лучше выполнить функцию такого типа в файле htaccess.

Мой вопрос заключается в том, действительно ли перезапись URL с использованием файла htaccess загружает страницу дважды, как это делает CFHEADER. Я не могу работать над этим кодом до понедельника, и я хотел бы узнать, каковы варианты и лучший ответ.

RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

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

Спасибо за вашу помощь!

Ответы [ 3 ]

1 голос
/ 05 февраля 2012

Нет, сервер не дважды ударяется, он просто меняет (перезаписывает) запрашиваемый URL. Вот почему в моем последнем вопросе , когда мне нужно было дважды ударить по серверу, один .htaccess не мог этого сделать, и мне пришлось прибегнуть к заголовкам PHP.

РЕДАКТИРОВАТЬ: под двойным нажатием на сервере я имею в виду выполнить скрипт и загрузить страницу. Насколько я понимаю, перезапись URL с помощью .htaccess будет иметь желаемый эффект для вас, поскольку он ничего не возвращает браузеру, пока не будут выполнены все условия перезаписи, он не перенаправляет URL, он просто перезаписывает это.

Другой способ сделать это - в JavaScript, перед отправкой Ajax-запроса, выполнить что-то вроде этого

ajax_url = 'http://ExaMple.CoM';
ajax_url = ajax_url.toLowerCase();

, которая преобразует строку в нижний регистр.

1 голос
/ 05 февраля 2012

Evik, вы получите перенаправление , только если в URL есть буквы верхнего регистра , поэтому, учитывая, что URL-адрес вашего запроса AJAX полностью находится под вашим контролем, просто убедитесь, что он начинается со строчных букв!

В дополнение к этому - и в качестве альтернативы - вы можете поместить RewriteCond в RewriteRule, чтобы перенаправление не происходило для ваших запросов AJAX. Это не те запросы, которые в любом случае нуждаются в модификации для целей SEO, поэтому, возможно, лучше просто оставить их.

0 голосов
/ 05 февраля 2012

Если вы используете аналитику Google, вы можете принудительно заставить всю статистику записывать в верхнем или нижнем регистре в настройках аккаунта. Я делаю что-то подобное, но я также использую регулярное выражение в коде GA.

...