使URL看起来动态

时间:2011-04-19 15:51:39

标签: php mysql apache mod-rewrite

  

可能重复:
  How do I convert a PHP query string into a slash-based URL?

如果我的数据库驱动页面包含这样的网址:

http://www.companyname.com/dynamic_page.php?id=1
http://www.companyname.com/dynamic_page.php?id=2
http://www.companyname.com/dynamic_page.php?id=3
...
http://www.companyname.com/dynamic_page.php?id=4001
http://www.companyname.com/dynamic_page.php?id=4002
http://www.companyname.com/dynamic_page.php?id=4003

其中url中的id用于从数据库中获取正确的内容,并且用户可以按照他/她想要的方式添加/删除/编辑任意数量的页面。

我理解如何手动使用mod_rewrite为网址提供更好的外观,例如

http://www.companyname.com/individual/1
http://www.companyname.com/individual/2
http://www.companyname.com/individual/3
...
http://www.companyname.com/commercial/4001
http://www.companyname.com/commercial/4002
http://www.companyname.com/commercial/4003

但我该如何动态地做到这一点?即允许用户指定url的一部分,在这种情况下,用户选择“个人”或“商业”,然后在URL的末尾添加id,而不必每次都编辑.htaccess文件用户创建新页面,或编辑/删除页面。

4 个答案:

答案 0 :(得分:1)

我认为这可能就足够了:

RewriteRule http://www.companyname.com/(.*)/(\d+) http://www.companyname.com/dynamic_page.php?id=$2

在/ 4441之前是什么并不重要,它总是会导致dynamic_page.php?id = 4441 ...

答案 1 :(得分:0)

您是否为ht访问文件中的每个ID手动添加新行?

您可以使用正则表达式轻松完成所有这些操作。这是一篇有点陈旧但与您的需求完全相关的帖子:http://www.webmasterworld.com/forum92/4332.htm

答案 2 :(得分:0)

结帐 - > Clean Urls

你可以试试。

RewriteEngine On
RewriteRule ^companyname.com/(.*)/(\d+)$ /$1.php?id=$2

答案 3 :(得分:0)

试试这个:

RewriteRule http://www.companyname.com/(.*)/(\d+) http://www.companyname.com/index.php?firstvalue=$1&secondvalue=$2