Intereting Posts
PHP – слой абстракции DB использует статический класс vs singleton object? Какова наилучшая практика отправки писем из PHP-скрипта? Вставка значений в многомерный массив php Обнаружение, если два окна браузера открыты для одного и того же сайта stop click () из события на созданном ajax входе PHPMailer Скрыть аутентификацию SMTP? PDO :: __ construct (): сервер отправил charset (255), неизвестный клиенту. Пожалуйста, сообщите разработчикам Сохранять разрыв строки из TextArea при написании MySQL Разница между row_array и result_array Запретить вход в браузер кнопки «Назад» после выхода в Laravel 5 PHP DateTime :: createFromFormat не работает во времени без начального нуля Ошибка nginx подключиться к php5-fpm.sock не удалось (13: отказ от прав) «Ошибка CSRF недействительна» в symfony 2, даже используя функцию form_rest (form) Ответ SMTP-сервера: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS Неопределенная ошибка загрузки $ load после обновления CodeIgniter с 1.7 до 2.1

Нужна помощь в написании URL Rewrite rule Регулярное выражение для PHP и htaccess

Я читал много сайтов, рассказывающих о том, как использовать правила перезаписи и регулярные выражения, но все они, как правило, относятся к конкретным примерам, не разбивая каждый фрагмент синтаксиса и фактически помогая мне изучить концепции, чтобы я мог писать тип кода, который мне нужен.

Любая помощь высоко ценится!

У меня такой URL-адрес: http://www.mysite.com/myphp.php?x=1A&y=2B&c=some1&d=some2

Я бы хотел, чтобы это переписывалось следующим образом: http://www.mysite.com/some1/some2

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

В этом конкретном примере? X = всегда одно и то же, а 1A меняется. То же самое относится к каждой из других частей строки php, однако я предполагаю, что правило перезаписи должно обрабатывать любое количество символов между .php-файлом и переменными, которые меня действительно интересуют.

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

Правило, подобное этому, будет работать (проверено):

 RewriteRule ^([^/]+)/([^/]+) myphp.php?x=1A&y=2B&c=$1&d=$2 [L] 

Для этого есть три части:

  1. RewriteRule указывает, что это правило для перезаписи (в отличие от условия или какой-либо другой директивы). Команда состоит в том, чтобы переписать часть 2 в часть 3.
  2. Эта часть является регулярным выражением, и правило будет выполняться только в том случае, если URL-адрес соответствует этому регулярному выражению. В этом случае мы говорим – ищите начало строки, затем кучу несимметричных символов, затем косую черту, затем еще одну группу символов без косой черты. Скобки означают, что части в круглых скобках будут сохранены для дальнейшего использования.
  3. Наконец, в этой части говорится переписать данный URL в этом формате. $ 1 и $ 2 относятся к частям, которые были захвачены и сохранены (обратные ссылки)

Что касается высококачественных ресурсов на mod_rewrite, в прошлом я нашел несколько, ища «mod_rewrite tutorial» (я думал, что это хороший для новичка). Они будут в основном такими, так что, если что-то конкретное вы не понимаете, откройте это, прежде чем двигаться вперед. Я не знаю, как объяснить синтаксис.

Regexes – это совсем другое дело, опять же, много ресурсов там – в том числе для новичков. После того, как вы получите базовое зависание регулярных выражений, вы можете использовать страницу Python re в качестве ссылки.

Что-то вроде (не проверено) добавлено в .htaccess?

 RewriteEngine on RewriteRule ^/([0-9a-z]+)/([0-9a-z]+)/$ /?c=$1&d=$2 [L] 

предполагая, что x и y не представляют интереса.