htaccess无法将文章ID重定向到使用php slug函数生成的文章slug

时间:2019-02-17 06:00:06

标签: php .htaccess friendly-url slug

我遵循的很多问题都发布在stackoverflow中,但对我没有帮助,这就是为什么我严格按照我的要求进行尝试的原因。感谢您的接受。.

我尝试了很长时间,但直到现在我的问题仍未解决。问题是我试图将我的url SEO友好,例如example.com/articles.php?id=''带到example.com/articles/my-first-article,而slug是用php生成的,并以波纹管的形式插入数据库。

function php_slug($string){

                        $spl_char = '/[^\-\s\pN\pL]+/u';
                        $double_char = '/[\-\s]+/';

                        $slug = preg_replace('/[^a-z0-9-]+/', '-', strtolower($string));
                        $slug = preg_replace($double_char, '-', $string);

                        $slug = trim($string, '-');

                        return $slug;
                    }

并包含在HTACCESS中

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [L,QSA]
#RewriteCond %{REQUEST_FILENAME} !-1

#RewriteRule ^/?$ /1 [QSA]

RewriteRule ^article([a-zA-Z0-9-/]+)$ article.php?article_link=$1 [L,QSA]
RewriteRule ^article([a-zA-Z0-9-/]+)/ article.php?article_link=$1 [L,QSA]

并链接为

<a href="article/?article_link='<?php echo $article_link;?>'">BTN</a>

1 个答案:

答案 0 :(得分:0)

请提高您的文章重写:

RewriteEngine On

RewriteRule ^article\/(.*)$ article.php?article_link=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [L,QSA]

将您的hrefs更改为漂亮的链接(重写应该抓住它们):

<a href="article/<?php echo $article_link;?>">BTN</a>