动态网址和将标题添加到网页末尾的网址

时间:2011-11-02 13:00:30

标签: php url dynamic directory title

我正在创建一个内容是动态的页面,但直到现在我只能通过变量获取我想要的页面(使用stackoverflow作为示例):https://stackoverflow.com/questions?q=7980734

但是在stackoverflow中可以看到它们为

https://stackoverflow.com/questions/7980734/dynbamic-url-and-adding-a-the-title-to-the-end-of-the-page-url

我只是想知道他们是如何做到的(使用/)而不为每个问题创建单独的页面。

以及如何在不创建新目录的情况下将标题添加到网址末尾。 即如果你输入

https://stackoverflow.com/questions/7980734/ 

它仍然会将您带到问题中,然后将添加标题。

感谢您的帮助!

5 个答案:

答案 0 :(得分:1)

这称为URL重写,基本上你有一个处理程序来解释进来的URL。这并不意味着它是'精确'的目录结构,只是'某事'的程序化路径。

服务器端,它有例如/questions/的脚本可能是接受标识7980734的脚本/文件/应用程序以及dynamic-url-and-adding-a-the-title-to-the-end-of-the-page-url的友好网址链接

很简单,你不必使用数字ID来查找数据库中的记录,只需使用文本,使其安全URL(php函数)。

答案 1 :(得分:1)

我认为最简单的方法是将.htaccess文件放在根文件夹中,其内容如下:

RewriteEngine On
RewriteRule ^questions/(.*)$ /questions.php?id=$1 [L]

这将在内部将请求http://domain.com/questions/7980734路由到http://domain.com/questions.php?id=7980734

答案 2 :(得分:1)

大多数时候使用.htaccess文件在请求时重写某些URL就足够了。例如,stackoverflow可能会使用如下内容:

RewriteEngine on
RewriteRule ^questions/([0-9]+)/([_\-\&\'\,\+A-Za-z0-9-]+)?$ questions.php?q=$1

这会使stackoverflow.com/questsions/1234/a-title-of-a-page和stackoverflow.com/questions.php?q=1234同一页面,因此在您的网站上您需要使用“tidy”版本的URL(第一个)

可以阅读更多内容,您可以根据需要自定义URL。例如,有几个地方可以阅读:

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

http://www.easymodrewrite.com/

答案 3 :(得分:0)

您可以使用apache mod_rewrite执行此操作,或者您可以查看可能将URL路由到特定php控制器文件的MVC framework like Zend

答案 4 :(得分:0)

您必须使用enable mod_rewrite在项目的.htaccess中启用它。另外,您必须查看apache配置httpd.conf并检查是否添加了mod_rewrite。因此,您可以将所有流量定向到项目中的URL解析器。 除此之外,您必须在应用程序中拥有一个控制器逻辑,您可以在其中获取url字符串并确定url和参数的控制器文件。

请点击此处:http://httpd.apache.org/docs/current/mod/mod_rewrite.html了解更多信息。