использование двух переменных (отдельно) с дефисом в $ _GET

0

Имею некоторые проблемы, и я не могу понять этого. Я просто вложу то, что я пытаюсь сделать:

Вот моя ссылка + код, который обрабатывает ссылку:

echo "<a href='/blog/$row[id]/$post_title'>";echo $row['post_title']; echo '</a>';

if (isset($_GET['post_id']) && isset($_GET['title'])) {
    $get_id = filter_input(INPUT_GET, 'post_id', FILTER_VALIDATE_INT);
        if (!$get_id) {
            echo 'Post not found.';
            exit();
        }

и у меня есть это rewrite_rule

RewriteRule ^blog/(.+)/(.+)$ /index.php?post_id=$1&post_title=$2 [L]

поэтому, если я пойду:

www.example.com/1/blog-post-title

он откроет сообщение в блоге с этим идентификатором и названием. Эта версия отлично работает без проблем.

Но мне нужно реализовать дефис вместо косой черты в ссылке (после id), и это то, что я пробовал:

echo "<a href='/blog/$row[id]-$post_title'>";echo $row['post_title']; echo '</a>';

Но когда я иду:

www.example.com/1-blog-post-title

Он не работает, и переменная, которую он пытается найти, когда я повторяю "$ _GET ['post_id'] '; это "1-блог".

Что я здесь делаю неправильно? Очевидно, что в моей ссылке я соединяю идентификатор с заголовком сообщения... но что я делаю, чтобы это сделать?

Спасибо за любую помощь...

  • 0
    Ваш тег привязки указывает на /blog/$row[id]-$post_title но пример вашего URL-адреса - www.example.com/1-blog-post-title . Разве это не должно быть www.example.com/blog/1-post-title ?
  • 0
    просто ошибка в моем копировании / вставке, извините
Теги:

1 ответ

1
Лучший ответ

Вам нужно будет изменить RewriteRule для обработки нового шаблона. Для первой группы соответствия используйте [^-]* для соответствия любым символам, которые не являются дефисом, а затем дефисом, а затем соответствуют всем остальным во второй группе.

RewriteRule ^blog/([^-]*)-(.+)$ /index.php?post_id=$1&post_title=$2 [L]

См. Замену на Regex101.

  • 0
    Работает отлично. Я действительно изменил с / на - в правиле перезаписи, но я не изменил шаблон для идентификатора. Это сработало, спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню