我正在创建一个内容是动态的页面,但直到现在我只能通过变量获取我想要的页面(使用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/
它仍然会将您带到问题中,然后将添加标题。
感谢您的帮助!
答案 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。例如,有几个地方可以阅读:
答案 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了解更多信息。