Php 用htaccess文件重写URL

Php 用htaccess文件重写URL,php,apache,.htaccess,mod-rewrite,localhost,Php,Apache,.htaccess,Mod Rewrite,Localhost,我已经在无数的博客中搜索过了,看到了关于堆栈溢出的问题,但我还是不明白 我有一个博客网站,网址如下: http://website.local.co.uk/article.php?id=123-123 但我想使用mod rewrite将其更改为: http://website.local.co.uk/article/123-123 我还想添加一个标题,成为: http://website.local.co.uk/article/123-123/the-title-goes-here 目前我

我已经在无数的博客中搜索过了,看到了关于堆栈溢出的问题,但我还是不明白

我有一个博客网站,网址如下:

http://website.local.co.uk/article.php?id=123-123
但我想使用mod rewrite将其更改为:

http://website.local.co.uk/article/123-123
我还想添加一个标题,成为:

http://website.local.co.uk/article/123-123/the-title-goes-here
目前我正在使用:

RewriteEngine On
RewriteRule ^article/([0-9]+)/?$ article.php?id=$1 [NC,L]

但这会将我重定向回错误404页面,因为它没有获取ID号。有什么想法可以实现我想要它做的吗?

通常这可以通过路由器有效地实现。在github上查找PHP路由器,那里有一些有用的路由器类。此外,路由器通常是MVC框架的一部分,如CakePHP或Laravel。您甚至可以使用Slim或Flight等微框架。

将此代码放入您的
文档\u ROOT/.htaccess
文件:

RewriteEngine On

RewriteRule ^article/([0-9]+-[0-9]+) /article.php?id=$1 [L,QSA,NC]

那么
title
参数呢?title是可选的,OP can不希望在重写的URL中包含title部分,正如您从问题中看到的那样。这里的正则表达式允许OP将链接保留为
/article/123-123/标题
/article/123-123/
您是对的,但不清楚是否应将标题添加到ID中。如果使用框架并使用ID参数,你不想给它添加标题,对吗?是的,OP似乎想保留Stackoverflow的链接,其中问题id是驱动因素,文章从DB中查找(如果缺少)@anubhava我编辑了我的问题,以显示我正在使用的代码-知道为什么它不提取id号并将我重定向回错误页面吗?