- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый всем вечер!
Ситуация следующая:
Нужно сформировать страницу результатов нажатия на ссылку с тэгом "HSPA+". Чтобы плюсик не мешал жить, я обработал данный тэг функцией urlencode. В итоге в не ЧПУшной структуре это получилось так:
http://domain.com/tag.php?tag=HSPA%2B
все работало отлично.
Затем в .htaccess была прописана следующая инструкция:
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1
После чего данный URL приобрел вид
http://domain.com/tag/HSPA%2B/
теперь плюсик стал обрезаться, передается только HSPA, посмотрел через $_SERVER, выдает следующее:
[QUERY_STRING] => tag=HSPA+
[REQUEST_URI] => /tag/HSPA%2B/
[SCRIPT_NAME] => /tag.php
[PHP_SELF] => /tag.php
[argv] => Array
(
[0] => tag=HSPA
[1] =>
)
Помогите, плиз, разъясните почему при ЧПУ теряется обработанный урленкодом плюсик в урл, и как это можно поправить
Ничего не понял, но попробуйте так
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1 [NE]
;8909188']Ничего не понял, но попробуйте так
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1 [NE]
Попробыввал - все равно, обрезает обработанный плюсик в урле (%2B)
А, ну всё верно, плюсик нужно заменять на %2B
;8909243']А, ну всё верно, плюсик нужно заменять на %2B
Я не очень понял, ведь в регулярке для .htaccess прописано и для случая "%2B" и просто для "+", просто "+" у меня влезает в урле, когда, там присутствует элемент из двух и более слов через пробел, например "texas instruments" urlencode обрабатывает как "texas+instruments" и дальше именно в таком виде он идет в урл, а затем переносится в ЧПУшную структуру без потерь, то есть в этом случае все отлично работает. А вот обрезается именно "%2B" и мне кажется что дело именно в "%"
Всё ясно :)
Вот так напишите:
RewriteRule ^tag/([0-9A-Za-z_\+]+)/$ tag.php?tag=$1 [L]
%2B сервер сам преобразует в обычный плюсик
Во всяком случе, у меня с таким правилом скрипт tag.php показывает для двух uri
/tag/test+/
и
/tag/test%2B/
одиныковый $_SERVER['QUERY_STRING']:
tag=test+
;8909429']Всё ясно :)
Вот так напишите:
RewriteRule ^tag/([0-9A-Za-z_\+]+)/$ tag.php?tag=$1 [L]
%2B сервер сам преобразует в обычный плюсик
Во всяком случе, у меня с таким правилом скрипт tag.php показывает для двух uri
/tag/test+/
и
/tag/test%2B/
одиныковый $_SERVER['QUERY_STRING']:
tag=test+
Попробовал, все равно "+" (%2B) нивелирует:(
А так если регулярку замутить. У вас проблема именно в ней а не в urlencode
Попробовал, все равно "+" (%2B) нивелирует:(
"Нивелирует" — это немного не то :) Вы, наверное, имели в виду "аннигилирует"?
Возможно, после этого правила выполняются ещё какие-то. Поэтому в конце нужна буковка [L].
Попробуйте всё сделать в чистом виде.
Одно правило, и один пустой скрипт с echo $_SERVER['QUERY_STRING']
А потом добавляйте по одной строчке. Так вы найдёте причину.
;8909487']"Нивелирует" — это немного не то :) Вы, наверное, имели в виду "аннигилирует"?
Возможно, после этого правила выполняются ещё какие-то. Поэтому в конце нужна буковка [L].
Попробуйте всё сделать в чистом виде.
Одно правило, и один пустой скрипт с echo $_SERVER['QUERY_STRING']
А потом добавляйте по одной строчке. Так вы найдёте причину.
Сделал так, как Вы сказали: очистил полностью .htacces прописал в нём только:
RewriteEngine on
RewriteRule ^tag/([0-9A-Za-z_\%2B\+]+)/$ tag.php?tag=$1 [L]
в файле tag.php прописал
echo $_SERVER['QUERY_STRING'];
print_r( $_SERVER['argv']);
все равно вместо "HSPA+" получается "HSPA ", то есть вместо плюсика пустое место
echo $_SERVER['QUERY_STRING'] выдает tag=HSPA+
print_r( $_SERVER['argv']); выдает
Array
(
[0] => tag=HSPA
[1] =>
)
Хочу к тому же отметить, что в неЧПУшной версии я работал с $_GET следующим образом: $tag=mysql_real_escape_string($_GET['tag']); - а дальше $tag я крутил как мне нужно, возможно здесь собака зарыта?
Я никак не совсем сообразил, так как в регулярке про .htaccess написано и про варианта "%2B" и элементарно про "+", элементарно "+" у меня лезет в урле, как скоро, вслед за тем присутствует вещество изо 2-ух и наиболее обещаний чрез пропуск, к примеру "texas instruments" urlencode возделывает будто "texas+instruments" и далее конкретно в этом облике дьявол соглашаться в урл, а потом выносится в ЧПУшную текстуру в отсутствии утрат, ведь имеется в данном случае безвыездно непревзойденно действует. А во обрезается конкретно "%2B" и ми видится будто ремесло конкретно в "%"