Я читал много сайтов, рассказывающих о том, как использовать правила перезаписи и регулярные выражения, но все они, как правило, относятся к конкретным примерам, не разбивая каждый фрагмент синтаксиса и фактически помогая мне изучить концепции, чтобы я мог писать тип кода, который мне нужен.
Любая помощь высоко ценится!
У меня такой 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]
Для этого есть три части:
RewriteRule
указывает, что это правило для перезаписи (в отличие от условия или какой-либо другой директивы). Команда состоит в том, чтобы переписать часть 2 в часть 3. Что касается высококачественных ресурсов на 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 не представляют интереса.