Helpers - компьютеры, интернет, программирование

Перенаправление на основе URL

Я не уверен в наиболее эффективном способе перенаправления на основе URL-адреса. Я видел примеры htaccess, которые близки к тому, что мне нужно, но я совсем не понимаю, что за этим стоит программирование. Вот что мне нужно, чтобы произошло:

  1. Проверьте, является ли страница «watch.html».
  2. Redirect if URL appears as "watch?blahblah" instead of "watch.html?blahblah".
    • Basically if URL doesn't have the .html
  3. Перенаправление на ту же страницу с добавленным в нее .html.

Любая помощь в написании этого кода приветствуется.

28.05.2012

  • Какую часть из того, что вы не понимаете? Дайте то, с чем вы работаете или что вы пробовали. В противном случае, я не знаю, есть ли здесь вопрос. 28.05.2012
  • Я только что просматривал форумы с различными кодами htaccess, которые проверяют URL-адрес и перенаправляют на его основе, и я понял, что не могу понять, как кодируется htaccess. Поэтому я по умолчанию спросил, знает ли кто-нибудь здесь, как делать то, что мне нужно. 28.05.2012
  • Для этого существует множество руководств (подобно этому), и я уверен, что на SO есть другие вопросы, которые охватывают всю или большую часть этой темы. Несмотря на ваши конкретные требования, имейте в виду, что это не сайт запроса кода, и вам нужен конкретный вопрос, на который нужно ответить. См. часто задаваемые вопросы. 28.05.2012
  • Я просто надеялся, что кто-нибудь сэкономит мне 4 часа исследований и бесконечных тестов. 28.05.2012
  • Добро пожаловать в программирование! Только подумайте, в следующий раз на то же самое уйдет всего три часа и 44 минуты. Но тогда возможности... (Конечно, я шучу, следующая попытка через три часа, максимум.) 28.05.2012

Ответы:


1

Нет, я думаю, это совершенно нормально. Модуль mod_rewrite имеет довольно неясный синтаксис, и это может быть очень неприятно.

То, что вы хотите, может быть написано так:

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.html$
RewriteRule (.*) $1.html

Сначала мы включаем механизм перезаписи. Затем есть директива RewriteCond: если это условие принимает значение true, будет применено одно правило RewriteRule, следующее за ним. Синтаксис RewriteCond прост: RewriteCond <subject> <regex pattern>; условие будет оценено как истинное, если шаблон соответствует теме. В нашем случае шаблоном является переменная сервера с именем REQUEST_URI, которая может быть вам знакома по PHP, она содержит URI, запрошенный пользователем. Шаблон здесь - это регулярное выражение \.html$. \ здесь - это escape-символ, чтобы избежать точки, которая, как вы, возможно, знаете, имеет особое значение в регулярном выражении («соответствует любому символу»); знак $ означает конец строки; ! отрицает все выражение, поэтому условие будет истинным, если следующий за ним шаблон не совпадает. Итак, строка RewriteCond гласит: «Если запрошенный URI не заканчивается строкой .html».

Затем следует директива RewriteRule. Его синтаксис RewriteCond <from> <to> [optional flags]. Часть «от» представляет собой шаблон регулярного выражения, который необходимо сопоставить. Часть «Кому» — это строка, в которую мы перепишем исходный запрос. В нашем конкретном примере from — это (.*): файл . означает «любой символ», звездочка означает «любое время», поэтому мы в основном говорим «любое количество любых символов», что означает, что мы хотели бы захватить весь путь. Мы помещаем его в круглые скобки, чтобы иметь возможность ссылаться на захваченную часть позже. Затем мы перепишем это в: $1.html, где $1 относится к первой строке, которую мы захватили в части «от».

И все: когда мы напишем «example.com/something» в адресной строке, будет обслуживаться страница «example.com/something.html».

Конечно, это очень просто, и его можно было бы значительно улучшить, чтобы сделать его более элегантным и прочим, но это должно помочь вам начать. Есть много полезных руководств, и документы также очень полезны.

28.05.2012
  • @ Алекс Не за что. Обязательно извлеките из этого уроки, иначе Джаред будет прав, и вы будете просто сценаристом :p. 28.05.2012
  • Я не думаю, что @AlexBath — это ребенок-сценарист (что в данном случае является незаконным присвоением этого термина). Тем не менее, на самом деле изучение множества аппликационных техник требует много тяжелой работы, но отдача заключается в усилиях. Это положительная обратная связь, но вы должны приложить усилия. Да, изучение модулей Apache может быть разочаровывающим из-за шаткой документации и сложности, присущей их назначению, но когда-нибудь вам нужно научиться. Хорошая работа над основным объяснением. 28.05.2012
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..