好的,首先让我说我明白这是一个之前被问过的问题。我只是不能将其缩小到关键字并找到我正在寻找的东西。如果这是重复的话,请提前抱歉。 htaccess重写对我来说就像黑魔法......我无法真正开始工作。
对于手头的问题: 我正在写一个简单的准系统php / html网站。我在大约10年内没有这样做(我通常使用一些CMS(wordpress,joomla等))。我正试图处理这些CMS“免费”的一些事情。像漂亮的URL一样。 我有一个简单的index.php,其中包含一些用于构建页面的包含。然后我的动态内容包含了我的包含文件夹。
实际网址的两个案例
index.php?page = index(我的主页) index.php?page =另一页(另一页)
但是,如果我想去,该怎么办? 的index.php?页=一个子页面到另一个页的
这是我的PHP(web根文件夹中的index.php)
if(isset($_GET["page"])){
$page = $_GET["page"];
$filename = "/includes/" . $page . ".php";
if(file_exists($filename)){
include("/includes/head.php");
include("/includes/navbar.php");
include $filename;
include("/includes/footer.php");
}else{
include("/includes/404.php");
}
}else{
include("/includes/head.php");
include("/includes/navbar.php");
include("/includes/index.php");
include("/includes/footer.php");
}
这是我的.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1
只要我没有任何子页面,这就有效。但是如果我尝试去[root] / somepage / somsubpage那么它就不再起作用了。有人可以帮帮我吗?我希望复制像wordpress这样的标准CMS所带来的效果,其中所有网址都是SEO友好的。
答案 0 :(得分:1)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1
不在你的php变量$ _GET [' page']会有完整的网址,例如:
example.com/foo/barr
所以$ _GET [' page'] => /富/巴尔
然而,这只是第一部分,您只需要执行特殊功能即可将网址映射到您的网页。
SEO页面是存储做类似的事情:example.com/some-url/of-my-special/page-in-here.1111.html所以这是你的网址,所以你需要看看at .xxxxx.html xxxx是变量所以现在如果你写htaccess就像:
RewriteRule ^(.*)\.(\d+)\.html$ index.php?fullurl=$1&pageid=$2
$ _ GET [' fullurl'] => /some-url/of-my-special/page-in-here.1111.html $ _GET [' pageid'] => 1111
答案 1 :(得分:0)
请!如果有人读到这个......我仍然坚持做什么......我 除了与mysql相关的文章之外什么也找不到。我已经搜索过了 天。我只需要了解如何在我原来的内容中重写PHP 使用变量动态地发布子页面。防爆。 index.php?page = index,index.php?page = secondPage, index.php?page = secondPage& SubPage< - 这是我找不到的部分 什么都有。如何让php查找多个级别 字符串?
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?level1=$1
RewriteRule ^([^/]+)\/([^/])+$ index.php?level1=$1&level2=$2
RewriteRule ^([^/]+)\/([^/])+\/([^/])+$ index.php?level1=$1&level2=$2&level3=$3