当前位置: 首页 > 面试题库 >

用PHP重写URL

司徒隐水
2023-03-14
问题内容

我有一个网址,看起来像:

url.com/picture.php?id=51

我将如何将该URL转换为:

picture.php/Some-text-goes-here/51

我认为WordPress也是一样。

如何使用PHP创建友好的URL?


问题答案:

您基本上可以通过以下两种方式执行此操作:

.htaccess路由与mod_rewrite

.htaccess在您的根文件夹中添加一个名为的文件,并添加以下内容:

RewriteEngine on
RewriteRule ^/?Some-text-goes-here/([0-9]+)$ /picture.php?id=$1

这将告诉Apache为该文件夹启用mod_rewrite,并且如果询问它与正则表达式匹配的URL,它将在 内部
将其重写为所需的内容,而最终用户看不到它。简单但不灵活,因此,如果您需要更多功能,请执行以下操作:

PHP路线

将以下内容放在您的.htaccess文件中:(请注意斜杠)

FallbackResource /index.php

这将告诉它为您index.php通常无法在您的站点中找到的所有文件运行。然后,您可以在其中例如:

$path = ltrim($_SERVER['REQUEST_URI'], '/');    // Trim leading slash(es)
$elements = explode('/', $path);                // Split path on slashes
if(empty($elements[0])) {                       // No path elements means home
    ShowHomepage();
} else switch(array_shift($elements))             // Pop off first item and switch
{
    case 'Some-text-goes-here':
        ShowPicture($elements); // passes rest of parameters to internal function
        break;
    case 'more':
        ...
    default:
        header('HTTP/1.1 404 Not Found');
        Show404Error();
}

这是大型站点和CMS系统执行此操作的方式,因为它在解析URL,配置和数据库相关的URL等方面提供了更大的灵活性。对于零星使用,使用硬编码的重写规则.htaccess会很好。



 类似资料:
  • 问题内容: 我正在尝试在我的PHP应用程序中实现URL重写。有人可以分享在PHP和MySQL中实现URL重写的分步过程吗? 在我的应用程序中,我想实现以下URL重写,我想重定向 至 请告诉我如何以上述任何一种方式实现这两个URL重写。 根据以下两种类型中的SEO,管理,应用程序的观点,哪个URL最好是另一件事。 问题答案: 通常,这只不过是启用mod_rewrite模块(您可能已经在主机上启用了该

  • 我正在尝试将文件上传到我的服务器,然后将该文件发送到Zendesk。Zendesk文档显示了如何: 这很好用。我现在必须用Guzzle(版本6)重写这个。我正在使用Symfony 2.7: 文件正在上传,但当我下载它时,它的内容中也会包含一些元数据(破坏了其他一些文件类型)。我想我没有正确上传,因为卷发的另一种方式很好。 我不知道为什么这些数据也作为文件的一部分发送(我不想这样做),或者是否可以为

  • 我试图使用重写规则在htaccess永久重定向: http://www.example.com/store/scripts/prodView.asp?idproduct=240 到 http://www.example.com/index.php?route=product/product 我曾经尝试过: 选项如下符号链接 重新启动发动机 RewriteCond%{QUERY_STRING}^id

  • 问题内容: 网站正在无法访问文件的网络主机上运行。但是,我想对用户友好的URL进行URL重写。 例如原始URL 预期网址 问题答案: 正如其他人所说,只需使用即可。 网址中间的“ index.php”可能看起来有些奇怪,但是我认为没有.htaccess可能无法使其看起来更好 否则,您可以要求托管服务商将任何URL重定向到/index.php,以便无需使用URL就可以处理URL重写。 然后,您可以使

  • 我正在处理的作曲家包有问题。它实现了一个特性计费。 我试图在我的类中重写此方法 但是该方法没有被重写。作为测试,我覆盖了一些公共功能,它们运行良好,这是特征的限制吗?我试图在网上找到答案,但没有找到。 我试图重写这个函数,因为我需要自定义BraintreeSubcript类的行为。 任何帮助都将不胜感激。

  • 问题内容: 我在Nginx或Apache中对此地址进行了重写: 像这样的脚本 如何在PHP中访问此重写的URL?因为,如果我当然使用,我会得到: 但我只想要: 这可能吗?感谢您的帮助。 更新nginx cnf 问题答案: 在conf中,我们需要添加用户标头: 并阅读: 更新 由于某些原因,nginx不喜欢标题名称中的符号“ _”,之前不知道它的工作方式,也许在nginx更新后有所更改。现在我正在使