【问题标题】:Clean URLs in PHP without mod_rewrite在没有 mod_rewrite 的 PHP 中清理 URL
【发布时间】:2011-10-22 04:43:21
【问题描述】:

我正在为我用 PHP(我很少使用)为客户端构建的网站开发一个后端,该后端几乎完成了。我主要是一名 Rails 开发人员,所以我很难不去使用一些混蛋版本的 CRUD 设置,我正在尝试清理 url。

我希望我的网址是这样的:

http://www.example.com/videos/name-of-video/

我打算只从$_SERVER['PHP_SELF'] 获取url 的最后一位并使用它在数据库中搜索,但我想做的是将index.php 文件放在http://www.example.com/videos/ 目录中并让它成为当我明确地将某人指向http://www.example.com/videos/name-of-video/ 时使用,如果这有意义的话。

如果我将 index.php 放在 /videos/ 目录中,这会按原样工作,还是需要其他东西?有没有可能不搞乱htaccess?

对不起,我可怜的解释。我希望这是有道理的。

谢谢!

【问题讨论】:

标签: php .htaccess clean-urls


【解决方案1】:

有几个选项可以在没有 RewriteRule 的情况下执行此操作。不是没有 .htaccess 搞砸的。

首先你可以命名一个没有扩展名的PHP脚本,即video而不是video.php,然后通过ForceTypeDefaultType设置实际的文件类型。所以 PHP 解释器仍然会接受它。路径将显示在$_SERVER['PATH_INFO'

同样,启用的+MultiViews 允许 PHP 脚本没有扩展名。

最后,ErrorDocument 处理程序可以用来代替真正的 RewriteRule。然而,它带来了许多缺点。

index.php 本身不会在虚假路径中获取任何随机文件名。唯一可行的选择是使用像http://www.example.com/videos/?name-of-video/这样的URL

所以没有。没有 some 配置的目录模仿没有很好的 URL。

【讨论】:

    【解决方案2】:

    据我所知,如果不触摸 .htaccess,就不可能进行这种操作。 当您编写 url http://www.example.com/videos/name-of-video/ 时,您的服务器肯定会在文件夹 name-of-video 文件夹中查找 index.php 文件。不存在的。

    如果这个任务可以在没有 .htaccess 的情况下完成,那么它们将永远不会被使用。 顺便说一句,你为什么不想使用 .htaccess..??

    【讨论】:

    • 除此之外,您可以使用 PHP 自己处理 url,但是,您只能使用 .htaccess 调用 php 脚本。 (即在 / 之后重写任何内容以转到 index.php?access=/something,因此这会将 example.com/videos/name-of-video 重写为 index.php?access=/videos/name-of-video 哪个然后你可以处理并运行正确的 php 代码)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多