2011-08-29 62 views
0

即使搞清楚如何编写谷歌搜索来解决这个问题,我也很难。根据网址提取数据库中的数据(又名DIGG)

如果你点击了在Digg故事却让这一切像digg.com/news/science/why_the_world_is_tilted的URL,而不是digg.com/reader.php?r=news&s=science&t=why_the_world_is_tilted

我敢肯定,他们没有几百万的子文件夹,并且我记得读一些4年之前解释了它是如何工作的,但我不记得再次查看它。

回答

1

如果你的服务器运行的是Apache和mod_rewrite的安装,你可以创建一个名为的.htaccess包含此文件:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
</IfModule> 

这将路径发送到请求的index.php在var $ _GET [” q']。 如果路径是一个现有的文件或目录,它不会发送到index.php的路径。

2

如果您使用的是Apache,则可以使用mod_rewrite来完成此操作。我不是这方面的专家,但是如果你搜索一些mod_rewrite教程,你可以找到一些例子,其中漂亮的URL在Web服务器上不可见地转换为不同的查询字符串。

2

有两种基本方法是:

  1. 在Web服务器解析URL,你想要的数据位,并将其转换为查询字符串;这通常通过mod_rewrite
  2. 从环境中获取URI并提取自己想要的位。大多数优秀的Web框架将为您提供一种方法来为您做到这一点。

例如,在Catalyst你可以写:

package My::Application::Controller::News; 
# … 
# :Path without an argument means the root for the controller. 
# The controller is news so: /news/ 
# :Args(2) means with two arguments 
sub article :Path :Args(2) { 
    my ($self, $c, $category, $article_name) = @_; 
    # … 
} 

而且$category将填充"science" and $ ARTICLE_NAME with “why_the_world_is_tilted”`

1

你说什么是clean url's。这种模式通常用于MVC架构。