我是stackoverflow的新成员和php的初学者。我开始了一个示例博客项目。它工作正常,但我想改变网址为seo友好。有人能帮帮我吗?如何为这个博客编写htaccess代码。
的index.php
<?php
include_once("db.php");
$sql = mysql_query("SELECT * FROM post");
?>
<html>
<head>
<title>
Post
</title>
</head>
<body>
<h1>Post List</h1>
<ul>
<?php
while($row = mysql_fetch_array($sql)){
?>
<li><a href="post.php?pid=<?php echo $row['id']; ?>"><?php echo $row['title']; ?></a></li>
<?php }?>
</ul>
</body>
</html>
post.php中
<?php
include("db.php");
if(isset($_GET['pid'])){
$id = $_GET['pid'];
$qry = mysql_query("SELECT * FROM post WHERE id=".$id);
}
if($qry === FALSE) {
die(mysql_error()); // TODO: better error handling
}
?>
<html>
<head>
<title>
View Post
</title>
<style>
body{
background-color: #c9c9c9;
}
h1, .para{
border: 2px solid red;
padding:10px;
}
</style>
</head>
<body>
<?php
while($row1 = mysql_fetch_array($qry)){
?>
<h1><?php echo $row1['title']; ?> </h1>
<p class="para"><?php echo $row1['desc']; ?></p>
<?php }?>
</body>
</html>
的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^post/([0-9]+) post.php?pid=$1 [NC]
</IfModule>
当我运行此代码时,网址会显示如下:
http://localhost/blog/post.php?pid=1
我想像这样显示网址
http://localhost/blog/post/1
解决方案已成功执行,但css样式无效。 Css样式放在css文件夹中
答案 0 :(得分:0)
在htaccess文件中试试这个
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
您可以使用bootsrap类
class bootstrap {
function __construct() {
$url=isset($_GET['url']) ? $_GET['url'] : null;
$url=rtrim($url,'/');
$url = explode('/',$url );
//print_r($url);
if(empty($url[0])) {
require 'controllers/index.php';
$controller = new index();
return false;
}
echo $url .'<br>';
$file = 'controllers/' .$url[0]. '.php';
if(file_exists($file)) {
require $file;
}
else {
require 'controllers/error.php';
$controller = new error();
return false;
}
$controller = new $url[0];
if(isset($url[2])) {
$controller ->{$url[1]}($url[2]);
}
else {
if(isset($url[1])) {
$controller ->{$url[1]}();
}
}
}
}
答案 1 :(得分:0)
尝试使用 -
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ post.php?pid=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ post.php?pid=$1
答案 2 :(得分:0)
.htaccess用于解析url,它不用于生成URL。你需要重写行
<li><a href="post.php?pid=<?php echo $row['id']; ?>"><?php echo $row['title']; ?></a></li>
到
<li><a href="/blog/post/<?php echo $row['id']; ?>"><?php echo $row['title']; ?></a></li>
你的.htaccess会工作