【问题标题】:How do I change the url look with .htaccess but keep the php functionality?如何使用 .htaccess 更改 url 外观但保留 php 功能?
【发布时间】:2020-04-04 14:17:41
【问题描述】:

我正在努力学习,所以请善待。我的网站是数据库驱动的,并使用 ID 号来生成页面。我希望 URL 不显示 ID 号,而是显示页面名称。有没有办法做到这一点,它只是装饰性的,不会影响网站?我也很可能搞砸了我编写重定向的方式,因为它似乎根本不起作用?我究竟做错了什么?谢谢。

这就是我的网址现在的样子:

http://mydomainname.com/index.php?id=35-Entertainment

我希望它看起来像这样:

http://mydomainname.com/Entertainment

RewriteEngine On

RewriteRule ^([^/d]+)/?$ index.php?id=$1 [L,QSA]

【问题讨论】:

    标签: php .htaccess redirect


    【解决方案1】:

    不幸的是没有办法做到这一点。

    本案例的流程如下:

    1. 用户输入网址。在这种情况下,您需要一个格式良好的 URL (http://mydomainname.com/Entertainment)
    2. 用户将此网址发送到您的服务器
    3. Apache 处理 url 并根据 url 中使用的域将其指向您的项目目录
    4. Apache 使用 htaccess 来查看下一步该做什么。在这种情况下,最好的方法很可能是使用RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 或类似的东西
    5. 然后您需要在您的应用程序中进行路由。例如,您可以使用路由表将格式良好的 slug 映射到模块/id 组合

    Apache 无法完成此过程,因为它不知道数据库中存在的内容。

    希望这对您有所帮助。

    【讨论】:

    • 有一种方法可以使用RewriteMap
    • 谢谢你,它确实有点帮助,你能指出正确的方向来了解更多关于你在#5中提到的路由吗?
    • @LawrenceCherone 感谢您指出这一点。根据其文档,它可以使用,但如果我阅读正确,则很难维护动态页面站点,除非您根据数据库生成映射文件。
    • @Taryn 当然。您将编写一个调度程序来处理提供的 URL,并将在您的应用程序中的 index.php?url=... 上(对于给出的 htaccess 示例)。调度程序如何使用它的一个例子是 CakePHP 1.3。它相当简单和古老,但这使得更容易理解。 github.com/littleant/cakephp-1.3.21/blob/master/cake/…。如果你真的想构建更复杂的应用程序,我建议使用像 Symfony 这样的框架。那里有用于路由构建的调度程序。
    • @Bearwulf you can use a db 通过你的权利,它不被建议,但远不像你说的那样不受支持。
    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 2019-05-07
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多