gpt4 book ai didi

php - mod_rewrite 最佳实践

转载 作者:可可西里 更新时间:2023-10-31 23:33:08 25 4
gpt4 key购买 nike

所以我刚开始弄乱 Apache 的重写模块,并想确保我做对了,因为我已经看到它以几种不同的方式完成。我的示例代码目前只是一个实验,但它最终可能会成为我正在从事的新项目的基本结构。

这是我的 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\-]+)/?$ index.php?id=$1 [L,NC]
</IfModule>

我的索引文件:

<?php
include 'views/headerView.php';
switch(strtolower($_GET['id']))
{
case "first": include 'views/firstPageView.php';
break;
case "second": include 'views/secondPageView.php';
break;
default: include 'views/homeView.php';
}
include 'views/footerView.php';
?>

以及默认的 homeView 模板:

<p>This is the home page.</p>
<p>To the first page. <a href="first">First Page</a></p>
<p>To the second page. <a href="second">Second Page</a></p>

我主要关心的是模板上的 anchor 标记中只有 url“first”和“second”。 url 在索引文件的开关中使用,以确定要显示的 View 。我这样做是为了当用户单击链接时,“first”或“second”一词将用于重写模块的反向引用,并在 url 中显示为 domain.com/first 而不是域。 com/?id=第一个。那么我是在正确的轨道上还是错过了什么?任何有用的建议将不胜感激,谢谢。

最佳答案

So am I on the right track here or am I missing something? Any helpful advice would be appreciated, thank you.

您走在正确的轨道上。你在这里做的事情没有错。当然,你将不得不调整一些东西,但总的来说你是在正确的轨道上。您可能想要为您生成链接的东西,某种映射或其他东西。所以“第一个”和那个映射到“views/firstPageView.php”。然后,您可以在 index.php 中使用它来处理路由以及生成链接。因此,如果“first”之类的内容更改为“something_else”,您将无需转到所有模板并手动更改它们。

此外,您让 mod_rewrite 规则处理可能的尾部斜线。由于尾部斜线,可能会出现很多随机性。当 mod_dir 认为请求是针对目录时,Apache 将 301 将缺少尾部斜杠的 URL 重定向到包含尾部斜杠的 URL。你可能想让你所有的链接都有一个尾部斜杠来避免这种情况。此外,如果您有尾部斜杠,则相关链接如 <a href="first">First Page</a>可能会停止工作,因为 URI 基现在是 /first/而不是 / .

关于php - mod_rewrite 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086799/

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