- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
1. Имеется урл вида place.php?place_id=2
2. Для переезда на ЧПУ в адресе дописывается переменная вида &placesef=sochi
3. Далее нужно отрезать всё, оставив значение этой переменной, получив на выходе /sochi/
Вот так
или вот так
Как в этой регулярке отрезать параметр place_id?
RewriteRule ^([-a-zA-Z0-9_]+)/$ place.php?place_id=(ЛЮБОЕ ЧИСЛО, этот параметр отбросить)&placesef=$1 [QSA,L]
или я чего-то не понял, или зачем вам вообще place_id? вы же сами его выкинули из адреса? &placesef=sochi в /sochi/ у вас движек преобразовывает, вам надо получить из адресной строки /sochi/ обратно в Get параметр placesef=sochi, и уже этот параметр движек использует для вывода контента какого-то...
те в хакцесс строка
RewriteRule ^([-a-zA-Z0-9_]+)/$ place.php?placesef=$1 [NC]
и почему [QSA,L]?
Вот тут расписал алгоритм http://phpforum.su/index.php?showtopic=84444&hl=# , проблема тоже решена вот так
Отвечаю на ваш вопрос:
1. Весь код написан мной, place_id содержит идентификатор нужного курорта, всё крутится вокруг него. Переписывать не вариант, полжизни уйдет, кода слишком много. Игнорировать мне нужно лишь для генерации адреса, а сама переменная должна сохраняться, иначе, как написал выше, сайт рухнет.
2. [QSA,L] - значение флага L не знаю, он во всех примерах. А вот QSA нужен мне для микса в урле, чтобы можно было дописывать параметры. Например, был урл place.php?place_id=2, стал /sochi/ . И так как работа по переходу к ЧПУ-урлам длительная, для постепенного хода указан флаг QSA, чтобы можно было делать такого вида /sochi/?articles=1&art=12.
Как в этой регулярке отрезать параметр place_id?
RewriteRule ^([-a-zA-Z0-9_]+)/$ place.php?place_id=(ЛЮБОЕ ЧИСЛО, этот параметр отбросить)&placesef=$1 [QSA,L]
RewriteRule ^([\w-]+)/$ place.php?placesef=$1 [QSA,L]
place_id=(.)
place_id=(.)(.)
RewriteRule ^([\w]+)/$ place.php?placesef=$1 [QSA,L]
Не, не то. Но уже сделал.
place_id=(.)(.)
у меня вирус порнухи вылез, сиськи во весь экран. Вы хакер?
Не, не то. Но уже сделал.
Чем именно не то?
Но уже сделал.
Я видел что вы сделали, поэтому и написал.
у меня вирус порнухи вылез, сиськи во весь экран. Вы хакер?
Так разве не лучше выглядит? В substitution нет регулярных выражений, и оттуда если что-то нужно вырезать то это удаляется из текста.
Так было бы лучше лет 10 назад)) substitution это правая сторона условия?
Урл: place.php?place_id=2&placesef=sochi . В новых урлах мне нужно видеть в адресной строке только значение переменной placesef для красоты, но при этом сохранять переменную place_id, т.к. все запросы исходя из ID, которое place_id и обозначает.
Типа один пишем, два в уме. Значение одной переменной в адресе, но вторую держим в памяти дабы обращаться к базе с её (второй) значением. Выкинуть мне её нужно было чтобы урл не получался вида /2sochi/ или /2/sochi , т.е. не показывая id.
Не "показывать ид" при этом "сохранить ид" который еще и является динамичным, через htaccess не сделать. Либо один статический ид; либо ид берется из адреса запроса; либо никакого ид нет (что собственно выше и есть в реврайте - ибо вам ид в чпу не нужен). А то, как у вас "решена" проблема (прописан параметр place_id=(.)) ничем не отличается от того варианта что я привел, кроме отсутствия бессмысленного в данном случае параметра place_id с какой-то хренотенью в качестве значения.
Одним .htaccess-ом задача не решается.
Если точнее, "прямая" - распознавание "движкового" адреса по ЧПУ потенциально решается большим .htaccess-ом (по 1 строчке на каждую страничку). Но лучше сделать соответствие "URL-id-шник" и разбирать его либо в движке, либо в "прокладке" (до того, как запрос будет обработан "движком" сайта).
А "обратная" (генерация ЧПУ по "движковому" адресу) - нет. Ну т.е. ссылки придётся переделывать вручную.. (а если ссылки, например, в меню или в листинге генерируются автоматически)...
ivan-lev, я вас не понял. Каждый урл писать в .htaccess не варик, страниц over 10k. Да и новые как, тоже постоянно писать? Плохо. Тянется переменная с названием категории, дальше по ней идет запрос в базу.
siv1987, вы прав. Но всё же переменная place_id остается до полной переиндексации. Вопрос #2:
как из этого
Добавить после RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^place_id=\d+&placesef=(.*?)(?:&|$)
RewriteRule ^place\.php /%1/? [R=301,L]