遇到麻烦,我无法想出这个。我只是粘贴我想要做的事情:
这是我的链接+处理链接的代码:
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和标题的博客文章。该版本没有问题,工作正常。
但是我需要在链接中实现连字符而不是斜杠(在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-blog”。
我在这里做错了什么?显然,在我的链接中,我将id连接到帖子标题。但是我到底在做什么才能导致这个问题?
感谢您的帮助......
答案 0 :(得分:1)
您需要修改RewriteRule
以处理新模式。对于第一个匹配组,使用[^-]*
匹配任何不是连字符的字符,后跟连字符,然后匹配第二组中的所有其他字符。
RewriteRule ^blog/([^-]*)-(.+)$ /index.php?post_id=$1&post_title=$2 [L]
请参阅Regex101上的替换。