Невозможно эффективно писать операторы .htaccess RewriteCond.Apache

Ответить Пред. темаСлед. тема
Anonymous
 Невозможно эффективно писать операторы .htaccess RewriteCond.

Сообщение Anonymous »

В настоящее время я использую mod_rewrite для конфигурации сервера Apache и столкнулся с препятствием.
Это мои инструкции RewriteCond:

Код: Выделить всё

RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI}.html -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI}.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI}.json -f
Эти условия полностью работают, но чтобы добавить больше расширений, мне нужно скопировать строку всю и просто изменить расширение в конце. Что делать, если у меня около 20 условий и я хочу сменить каталог? Мне нужно будет изменить все строки. Это нарушение DRY. Шаблоны REGEX здесь также не работают (поскольку это первый параметр RewriteCond — TestString). Я также мог бы использовать RewriteMap, но я ограничен использованием файлов .htaccess, и вы не можете использовать их здесь (мой хостинг не позволяет редактировать виртуальные хосты).
Есть ли способ добиться такой функциональности, которая будет работать аналогично этому примеру ниже? (если, конечно, регулярное выражение сработало — это невозможно — просто пример) 👇

Код: Выделить всё

RewriteCond %{DOCUMENT_ROOT}\/pages%{REQUEST_URI}\.(html|php|json)
Кроме того, у меня есть оператор RewriteRule, который запускается, если условия выполняются:

Код: Выделить всё

RewriteRule ^(.*)$ pages\/$1\.html
И есть еще одна проблема. Расширение файла в правиле должно быть динамическим. если бы REGEX в RewriteCond работал, я мог бы каким-то образом сослаться на него в правиле и получить желаемое расширение. Но теперь я ограничен .html. А это вообще не работает:

Код: Выделить всё

RewriteRule ^(.*)$ pages\/$1\.(html|php|json)
Итак, окончательный вывод заключается в том, что ввод текста

something.com/contact
фактически будет сопоставлен с любым файлом, который существует в папке «страницы» с именем «контакт». (ЕСЛИ он вообще существует)
Если он существует, он будет сопоставлен с

something.com/pages/contact.html или .php или .json и т. д. ...
Спасибо за любую помощь! Хорошего дня :)
Я пробовал поискать в Интернете, чтобы сделать это, но не нашел решения этой конкретной проблемы... Кроме того, последней попыткой был пример, который я привел выше. Но это не работает.

Подробнее здесь: https://stackoverflow.com/questions/792 ... statements
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Переопределить «Требовать все отказы» с помощью RewriteCond/Rule
    Anonymous » » в форуме Apache
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous
  • Apache RewriteCond с несколькими IP-адресами не работает
    Anonymous » » в форуме Apache
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Сравните две обратные ссылки в RewriteCond
    Anonymous » » в форуме Apache
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Rewritecond и негативное соответствие
    Anonymous » » в форуме Apache
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • В разрешении отказано: AH00529: /home/username/public_html/.htaccess pcfg_openfile: невозможно проверить файл htaccess,
    Anonymous » » в форуме Php
    0 Ответы
    60 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Apache»