- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Вот такая проблема:
Есть ssi-документ
site.ru/mama-papa.shtml
в нем идет такой запрос:
<!--#include virtual="/text.shtml" -->
В самом файле text.shtml
такое:
<!--#if expr="$DOCUMENT_URI=/papa.shtml/" -->Отец<!--#endif -->
<!--#if expr="$DOCUMENT_URI=/mama-papa.shtml/" -->Мама и Папа<!--#endif -->
При запросе страницы site.ru/mama-papa.shtml
вместо ожидаемого
Мама и Папа
выводится:
Отец Мама и Папа
--------------------------------
почему так? и как с этим бороться?
--------------------------------
Буду очень признателен за помощь, спасибо!
А при запросе site.ru/papa.shtml что выводится?
А при запросе site.ru/papa.shtml что выводится?
Выводится то что и должно:
Отец
т.е. срабатывает только только одна команда
<!--#if expr="$DOCUMENT_URI=/papa.shtml/" -->Отец<!--#endif -->
а не две, как при запросе mama-papa.shtml
Здесь нет ответа на ваш вопрос: nginx.org/ru/docs/http/ngx_http_ssi_module.html#commands ?
потерто...
wwwwww, при этом запросу site.ru/papa.shtml слэш не мешает.
<!--#if expr="$DOCUMENT_URI=/mama-papa.shtml/" -->Мама и Папа<!--#endif -->
В конце лишний слеш. В пути нет слеша.
Изивнияюсь за дубль. Форум притормаживает.
Мое утверждение по слешам снимаю. Ошибся.
при этом запросу site.ru/papa.shtml слэш не мешает.
Нужно сам сайт посмотреть. Странно это.
5 лет уже не занимался SSI. Надо читнуть.
Предалагаю вывести <!--#echo var="DOCUMENT_URI" --> и сравнить с тем, что Вы пытаетесь сравнить.
Не знаю, как вы отнесетесь к моему совету, но исходя из женской логики я бы поступила так:
Оба запроса очень похожи, и я бы поэкспериментировала - поменяла местами слова Отец и Папа, поменяла местами строчки, удалила одну строчку и попробовала бы то с одной такой, то с одной другой, пока не докопалась до результата.
ТС, вот рабочий вариант:
<!--#if expr="$DOCUMENT_URI = /^\/mama-papa.shtml/" -->Мама и Папа<!--#endif -->
---------- Добавлено 20.10.2012 в 22:11 ----------
Не знаю, как вы отнесетесь к моему совету, но исходя из женской логики я бы поступила так:
Не стоит с такой логикой в программирование.
ТС, вот рабочий вариант:
Что-то он не заработал :(
Но проблему удалось решить при помощи команды #elif
Интересно, что если сделать так:
<!--#if expr="$DOCUMENT_URI=/papa.shtml/" -->Отец
<!--#elif expr="$DOCUMENT_URI=/mama-papa.shtml/" -->Мама и Папа
<!--#else --> <!--#endif -->
То на обеих страницах выводится одинаково:
Отец
А правильный вариант получается только, если порядок выставлен верно:
<!--#if expr="$DOCUMENT_URI=/mama-papa.shtml/" -->Мама и Папа
<!--#elif expr="$DOCUMENT_URI=/papa.shtml/" -->Отец
<!--#else --> <!--#endif -->
Вот так вот - все как и требуется.
Дело видимо в том, что, $DOCUMENT_URI - оценивает "вхождение", а не "полное соответствие"
т.е.
команда: <!--#if expr="$DOCUMENT_URI=/papa.shtml/" -->Отец<!--#endif -->
будет обработана для всех урлов вида: *papa.shtml
mama-papa.shtml
deda-papa.shtml
1234597890papa.shtml
... и т.п.
А правильный вариант получается только, если порядок выставлен верно:
<!--#if expr="$DOCUMENT_URI=/mama-papa.shtml/" -->Мама и Папа
<!--#elif expr="$DOCUMENT_URI=/papa.shtml/" -->Отец
<!--#else --> <!--#endif -->
Я долгое время не мог понять, зачем писать
На места расставила все вот эта статья, рекомендую http://www.zytrax.com/tech/web/ssi.htm#tests
Цитата
If string2 is written /string2/ it is interpreted as a regular expression (see here) e.g /MSIE/ will find MSIE anywhere in string1.
/string/ - это строка - регулярное выражение, естественно, что будут найдены все вхождения. Чтобы работать со строкой нужно делать 'string'.
В переменной $DOCUMENT_URI нахотся УРЛ со / в начале строки.
Итого имеем правильный рабочий вариант без костылей:
<!--#if expr="$DOCUMENT_URI = '/mama-papa.shtml'" -->Мама и Папа<!--#endif -->
<!--#echo var="DOCUMENT_URI" -->
Все файлы создал, проверил. Все работает, если нужно прицеплю.
Строку