Назад | Перейти на главную страницу

Сделать заголовок поста как слаг в URL-адресе с помощью mod_rewrite

Я ранее задавал вопрос, но меня не устраивают ответы. У меня есть URL, например

http://example.com/details.php?a=100&b=101&slug=power-programming-in-php

Я хочу написать это правилом перезаписи как

http://example.com/power-programming-in-php

В настоящее время я использую правило:

RewriteRule ^([a-zA-Z0-9]*-[a-zA-Z0-9]*)$  paper-ads-details.php?a=$1&b=$2&slug=$3   [L]

Я застрял, есть ли у кого-нибудь предложения?

По крайней мере, ваше RewriteRule ошибочно в том, что оно относится к трем различным переменным обратного вызова, но у вас есть только одно совпадение группы для ссылки! Откуда должны взяться значения 100 и 101 для a и b, можно только догадываться. Также написанное вами регулярное выражение не будет соответствовать приведенному вами примеру, потому что в нем четыре набора дефисов, а не один. Попробуйте вместо этого:

RewriteRule ^([-a-zA-Z0-9]+)$  /paper-ads-details.php?a=100&b=101&slug=$1   [L]

Обратите внимание, что, поскольку я начал класс персонажей [] с тире, тире понимается как добавление литерального тире к списку опций вместо обозначения диапазона между другими символами, как в a-z синтаксис. Это работает только потому, что это первый символ. Мое правило должно соответствовать строке с любым количеством тире, но без точек. Если появляется точка или другой символ, он должен вернуться к нормальному сопоставлению URL-адресов.