gpt4 book ai didi

php - 无需使用 PHP 进行 Mod 重写

转载 作者:行者123 更新时间:2023-12-04 18:18:40 25 4
gpt4 key购买 nike

目前在我的 PHP 应用程序中使用 .htaccess 来选择我正在呈现的页面,例如,如果 URL 是 url.com/register,它实际上是 url.com/index.php?page=register 并且它得到/Theme/register.html 的内容。

这里是:

RewriteEngine On
RewriteRule ^(|/)$ index.php?page=$1
RewriteRule ^([a-zA-Z0-9/_-]+)(|)$ index.php?page=$1
RewriteRule ^(.*)\.htm$ $1.php [NC]

问题是,我对此不满意,因为如果我想使用另一个 GET 参数,我会失去这个“漂亮的 url”。我已经看到其他框架不需要 Mod 重写就可以做到这一点,如果有人能给我一个简单和/或适当的例子来说明如何做到这一点,或者解释它,我会很高兴。

谢谢!

最佳答案

通常的方法是重定向 一切* 通常指向应用程序的主引导文件 index.php .

  • 当我说一切时,我指的是不是公共(public)文件系统中的文件或目录的每个 URL。

  • 通过这种方式,PHP 获得了解析 URL 并(动态地)确定应该呈现哪些页面以及传递了哪些参数的令人愉快的工作。

    这就是 MVC 路由器发挥作用的地方,它们的任务是将 URL 分解为段,并确定哪些段表明您应该使用某个 Controller ,哪些段表明 Controller 应该调用某个方法和哪些段是应该传递给方法调用的参数。

    例如,这种方法在 WordPress 中使用,并且 URL 解析是根据您可以在管理员中指定的 URL 结构完成的。

    CakePHP 也使用它是一个 MVC 框架,它允许默认为以下 URL 结构: controller_name/method_name/parameter_1:value_1/parameter_2:value_2/ .但可以在任何程度上进行定制,例如定义从 URL 中提取参数的 RegEx。

    下面的代码是 WordPress 生成的默认 .htaccess。
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    关于php - 无需使用 PHP 进行 Mod 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11164864/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com