我们的数据库中的数据为book-id
,title
,year
,price
,author
,category
。我们需要使用php从数据库中检索数据。我们可以通过book-id=123
到www.localhost/books/?book-id=123
方法,通过$_GET
检索一本书的数据。但我的要求是,当我提供网址时,我希望看到有book-id=123
的图书信息:www.localhost/books/123
我正在使用Wamp服务器。
答案 0 :(得分:0)
您必须为Apache启用mod_rewrite。在此之后,您可以使用这样的重写规则:
RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)$ /$1/?id=$2
在.htaccess文件中。此规则会在内部将books / 123重定向到books /?id = 123。
另请参阅:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
答案 1 :(得分:0)
这里有两种方法。
错误的做法:
一种方法是使用您的网络服务器提供网址rewrite rules
(就像Apache Web Server
的其他答案一样)。正如另一个答案所示。但是,对于应用程序可移植性而言,这不是正确的做法,因为您的应用程序依赖于您的Web服务器类型来路由URL。
正确的方法:
正确的方法是进行应用程序级路由,并尽可能减少Web服务器的路由开销。只需将您的Web服务器指向PHP应用程序的一个入口点(例如一个index.php
)。这意味着传入的URL路径匹配regex
。我建议使用现有的框架来提供Laravel
之类的路由功能,以防止在regex
中出现任何丢失的极端情况。
例如,如果你真的想自己实现,你可以做的是遵循以下步骤:
$booksRoute = /^(\/)?books(\/)?[0-9]+(\/)?$/;
route($booksRoute, function() {
// process in the closure function
});