使用.htaccess将post.php?post_id=20重写为/post/这是标题/
我是.htacces的新手,多年来我一直试图从以下网站获取我的域名:使用.htaccess将post.php?post_id=20重写为/post/这是标题/,php,.htaccess,mod-rewrite,redirect,url-rewriting,Php,.htaccess,Mod Rewrite,Redirect,Url Rewriting,我是.htacces的新手,多年来我一直试图从以下网站获取我的域名: www.domain.com/post.php?post_id=20 对这样的事情: www.domain.com/post/this-is-the-title/ 正如我所说,我是新来的。但任何东西都会有帮助,请! 注意:我会从SQL数据库中获取我博客文章的标题,但你不能。您必须将标题放在查询字符串上。 .htaccess无法安全地从数据库中获取任何内容。 既然你要重写url,为什么不直接在URI中写文章标题呢?你不能。您
www.domain.com/post.php?post_id=20
对这样的事情:
www.domain.com/post/this-is-the-title/
正如我所说,我是新来的。但任何东西都会有帮助,请!
注意:我会从SQL数据库中获取我博客文章的标题,但你不能。您必须将标题放在查询字符串上。 .htaccess无法安全地从数据库中获取任何内容。
既然你要重写url,为什么不直接在URI中写文章标题呢?你不能。您必须将标题放在查询字符串上。 .htaccess无法安全地从数据库中获取任何内容。
既然您要重写url,为什么不在URI中简单地写文章标题?如果页面标题是数据库驱动的(或者是动态的),我看不出您怎么能逃脱.htaccess重写。在PHP脚本中使用路由将更有意义 我写过一个非常简单的路由方法。这是为人们只进入主题,但你应该能够建立一个数据库驱动路由器的基础上 基本上,通过index.php路由所有流量,然后在那里获取请求URI并决定加载哪些资源 [编辑] 让我用我的博客文章中的信息详细说明一下 假设您已经设置并运行了站点,首先将流量定向到index.php。您可以在.htaccess中执行此操作,操作方式如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
$pdo = new PDO(/* your db connection params */);
$page = $pdo
->query("SELECT * FROM pages WHERE alias = :alias",
array("alias" => $uri)
)
->fetch();
然后,在index.php中(或在从index.php调用的脚本中),您可以获得请求URI:
$uri = $_SERVER["REQUEST_URI"];
好的,到目前为止还不错。现在让我们假设您的数据库包含页面内容和页面别名。uri很可能是页面别名,因此您只需执行以下操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
$pdo = new PDO(/* your db connection params */);
$page = $pdo
->query("SELECT * FROM pages WHERE alias = :alias",
array("alias" => $uri)
)
->fetch();
此时,您应该在URI字符串中具有与标题(或别名)对应的页面内容。您现在需要做的就是以任何方式显示它:
echo $page["content"];
如果页面标题是数据库驱动的(或者是动态的),我看不出你怎么能不重写.htaccess。在PHP脚本中使用路由将更有意义 我写过一个非常简单的路由方法。这是为人们只进入主题,但你应该能够建立一个数据库驱动路由器的基础上 基本上,通过index.php路由所有流量,然后在那里获取请求URI并决定加载哪些资源 [编辑] 让我用我的博客文章中的信息详细说明一下 假设您已经设置并运行了站点,首先将流量定向到index.php。您可以在.htaccess中执行此操作,操作方式如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
$pdo = new PDO(/* your db connection params */);
$page = $pdo
->query("SELECT * FROM pages WHERE alias = :alias",
array("alias" => $uri)
)
->fetch();
然后,在index.php中(或在从index.php调用的脚本中),您可以获得请求URI:
$uri = $_SERVER["REQUEST_URI"];
好的,到目前为止还不错。现在让我们假设您的数据库包含页面内容和页面别名。uri很可能是页面别名,因此您只需执行以下操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
$pdo = new PDO(/* your db connection params */);
$page = $pdo
->query("SELECT * FROM pages WHERE alias = :alias",
array("alias" => $uri)
)
->fetch();
此时,您应该在URI字符串中具有与标题(或别名)对应的页面内容。您现在需要做的就是以任何方式显示它:
echo $page["content"];
使用.htaccess无法做到这一点,因为您需要“以某种方式从SQL数据库获取博客文章的标题”,使用PHP执行重定向: 您不能使用.htaccess来执行此操作,因为您需要“以某种方式从SQL数据库获取您的博客文章的标题”,请使用PHP重定向。:) 我知道这很旧,但我刚刚有时间尝试一下,在index.php中,我应该把“$uri=$\u SERVER[“REQUEST\u uri”];”放在哪里?无论我放在哪里,它都是文本而不是代码为了让您的代码被评估为PHP,它必须在PHP标记中:
我知道这是旧的,但我刚刚有时间尝试它,我应该在index.PHP中的哪里放“$uri=$\u SERVER[“REQUEST\u uri”]?”?无论我放在哪里,它都是文本而不是代码为了让您的代码被评估为PHP,它必须在PHP标记中: