[英]htaccess - rewrite urls with php and mysql
我正在尝试重写/example-friendly-url
以显示/posts.php?id=1
的内容。
友好的url值和id都存储在mysql表中。
到目前为止,这是我写的内容,但有一些不正确的地方:
posts.php:
include('/functions.php');
$post = getPost($_GET['id']);
$param = getSlug($_GET['param']);
functions.php:
function getPost($id) {
$id = (int) $id;
$query = mysql_query("SELECT * FROM list WHERE id = '$id'") or die(mysql_error());
return mysql_fetch_assoc($query);
}
function getSlug($param) {
$query = mysql_query("SELECT id FROM list WHERE slug = '$param'") or die(mysql_error());
return mysql_fetch_assoc($query);
}
.htaccess:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/posts.php
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/posts.php?param=$1 [NC,L]
任何帮助将非常感激。
在htaccess文件中处理mod_rewrite规则时,将删除斜杠,因此您不希望正则表达式前的^/
:
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/posts.php?param=$1 [NC,L]
您正在通过_GET['param']
传递“子弹”。 没有“ id”。 您需要在posts.php
执行的posts.php
是将其转换为ID:
include('/functions.php');
$post_id = getSlug($_GET['param']);
$post = getPost($post_id);
当然,请确保使用$_GET['param']
mysql_real_escape_string之类的东西对$_GET['param']
进行清理(不建议使用,您确实想使用mysqli )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.