首先我解释一下 index.php 在我的站点中是如何工作的。
首先,index.php 具有过滤 GET 名称的功能,如果它不为 null 并且存在我的页面的名称(我定义的),例如博客、照片、模式、关于和联系,因此包括具有相同名称的文件请求得到
我的 htacess 适用于单页,例如模式、关于、联系方式,但现在我想添加“子类别”,例如 blog/hello-world。
blog.php 的工作方式与索引相同,它包含来自 GET 变量(post)的同名文件。
换句话说,让我们看看实际情况。
index.php?page=modalities -> /
modalities index.php?page=blog&post=nameofpost -> 我可以正确看到,但是使用htaccess时与第一条规则有冲突,因为它将博客作为单个文件进行分析并且没有空间到另一个 GET 变量
我想将 index.php?page=blog&post=nameofpost 重写为 /blog/nameofpost 而不会与第一条重写规则发生冲突。
RewriteRule (.*) index.php?pg=$1 [L]
如果我在重写规则的过程中使用更多字符串,我不能将其用于我的单个页面,例如联系人 (index.php?pg=contact /contact),它会给我一个 404 错误。
我的 index.php(结构)
$url = addslashes($_GET["pg"]);
if(isset($url) && ($url === "photos" || $url === "time" || $url === "modalities" || $url === "contact" || $url === "blog" || $url === "about")){
include "page/{$url}.php";
return $lock = true;
}elseif($url === "" || $url === "home" || !isset($url) || (empty($url) || trim($url)==='')){
include "home.php";
}else{
echo "Error 404";
}
.htaccess 文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?pg=$1 [L]
ErrorDocument 404 /404
ErrorDocument 403 /404
ErrorDocument 404 /404
Options -Indexes
IndexIgnore *
我知道 .htaccess 文件未配置,因为我找不到解决方案,同时使用两种类型的 url。
预先感谢您的关注。