Имею некоторые проблемы, и я не могу понять этого. Я просто вложу то, что я пытаюсь сделать:
Вот моя ссылка + код, который обрабатывает ссылку:
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-блог".
Что я здесь делаю неправильно? Очевидно, что в моей ссылке я соединяю идентификатор с заголовком сообщения... но что я делаю, чтобы это сделать?
Спасибо за любую помощь...
Вам нужно будет изменить RewriteRule
для обработки нового шаблона. Для первой группы соответствия используйте [^-]*
для соответствия любым символам, которые не являются дефисом, а затем дефисом, а затем соответствуют всем остальным во второй группе.
RewriteRule ^blog/([^-]*)-(.+)$ /index.php?post_id=$1&post_title=$2 [L]
См. Замену на Regex101.
/blog/$row[id]-$post_title
но пример вашего URL-адреса -www.example.com/1-blog-post-title
. Разве это не должно бытьwww.example.com/blog/1-post-title
?