首先解释一下index.php在我的网站中是如何工作的。
首先,index.php有一个过滤GET名称的函数,如果不是null并且存在我的页面的名称(我定义的),比如博客,照片,模态,关于和联系,所以包括具有相同的文件请求名称GET
我的htacess适用于单页,如模态,关于,联系,但现在我想添加“子类别”,如博客/你好世界。
blog.php与索引的工作方式相同,它包含来自GET变量(post)的同名文件。
换句话说,让我们看看行动。
index.php?page = modalities - > /方式
index.php?page = blog& post = nameofpost - >我能正确看到
但是当使用htaccess与第一条规则发生冲突时,因为它将博客分析为单个文件并且没有其他GET变量的空间
我想重写index.php?page = blog& post = nameofpost到/ blog / nameofpost而不与第一条重写规则冲突。
RewriteRule(。*)index.php?pg = $ 1 [L]
如果我在重写规则的使用中使用更多的字符串,我无法使用我的单个页面,例如contact(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文件没有配置,因为我无法找到解决办法,同时有两种类型的网址。
提前感谢您的关注。
答案 0 :(得分:1)
以下RewriteRule将允许您有两个级别,将路径的第一部分重写为pg=
,将路径的其余部分重写为post=
:
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?pg=$1&post=$2 [L]
要确保这不会干扰您现有的规则,您应该更改existsin RewriteRule
以匹配不是路径分隔符(/
)的任何内容:
RewriteRule ^([^/]*)/?$ index.php?pg=$1 [L]