如何在PHP中生成链接?

时间:2010-10-06 08:22:50

标签: php url hyperlink

这是一个非常基本的问题,但我似乎无法在Google上找到任何内容,嗯。

无论如何,我不是指创建链接,我说的是生成链接,例如site.com/1或how to generate links in php?,网址后面的数字会以相应的帖子存储在数据库中,例如。我如何使用php生成这些?

如果我访问h ** p://site.com/questions/3870639/how-to-generate-links-in-php如何告诉服务器查询数据库并检索3870639的相应帖子? (没有htaccess)。

6 个答案:

答案 0 :(得分:2)

仅使用PHP是不可能的,它需要一个名为mod_rewrite的Apache服务器模块(假设您为服务器使用Apache)。谷歌吧。

答案 1 :(得分:2)

您必须使用.htaccess

您可以通过将所有请求转发到特定文件来实现这些类型的URL。这是您的Front Controller,它将分解URL,提取信息并执行或委派必要的操作。使用前端控制器,您可以在网站上找到单一入口点

但您需要设置.htaccess以将所有请求转发到此文件,例如

 RewriteRule ^(.*)$ index.php [QSA,L]

您应该检查实现此模式的各种框架,如symfony或Zend。

答案 2 :(得分:1)

如果你去了一个不存在的目录3870639,我不知道如何告诉服务器导航到某个页面。我会使用htaccess重定向到page.php或类似的,并使用$ _SERVER ['REQUEST_URI']来获取页面URL,或者将URL转换为htaccess中的$ _GET变量,然后你可以拆分('/',$ _SERVER ['REQUEST_URI'])获取目录数组。

$directories = split('/',$_SERVER['REQUEST_URI']);
print_r($directories);

给出

array(
   [0] => 'site.com',
   [1] => 'questions',
   [2] => '3870639',
   [3] => 'how-to-generate-links-in-php'
)

但就像我说的那样,不知道怎么去那个页面。

答案 3 :(得分:0)

文字转换。编写一个正则表达式,该表达式将发现一个URL并将其转换为<a href="$1">$1</a>

答案 4 :(得分:0)

使用mod_rewrite将是最佳解决方案,但如果您无法使用它,您仍然可以使用MultiViews实现类似的功能。但是,您仍然需要启用它(通常通过.htaccess或Apache conf完成)。

MultiViews用于允许内容协商,因此您可以请求/ images / banner和Apache返回适当的类型(banner.png,banner.svg等),具体取决于浏览器的Accept标头。您可以使用它来隐藏脚本的扩展名,从而允许您在不更改网址的情况下更改运行网站的技术。

在您的情况下,您可以使用

  

/问题/ 3870639 /如何对生成链接合的PHP

相同
  

/questions.php/3870639/how-to-generate-links-in-php

在questions.php $_SERVER["PATH_INFO"]中包含/3870639/how-to-generate-links-in-php(或者您可以解析$_SERVER['REQUEST_URI'],如BenWells所提及的那样)。使用explode()或正则表达式来获取ID。

答案 5 :(得分:0)

我认为单独使用PHP是不可能的。您必须使用mod_rewrite(您不希望使用它)或将默认的404错误文件更改为index.php。然后在index.php中,您可以使用explode('/', $_SERVER['REQUEST_URI'])从网址获取ID。

但另一种方法是使用url(我不确定这会起作用,但我想我已经在某处看到了它) http://site.com/index.php/questions/3870639/how-to-generate-links-in-php