我正在尝试使用apache RewriteMap重写我的一些网址。
我想改造
www.mywebsite.com/?p=category&id=xxxx
在
www.mywebsite.com/category/channel/program/personnality
我在php脚本中使用id从db中检索必要的变量。
到目前为止,它无法正常工作,经过无数个小时的研究后,我想我会请求一些帮助。
我无耻地重复使用了here
提供的一些配置这是我的httpd.conf
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteMap redirects prg:/var/www/redirects/redirects.php
RewriteCond ${redirects:%{HTTP_HOST}%{REQUEST_URI}} !^GOOD$
RewriteRule ^/(.*)$ ${redirects:%{HTTP_HOST}%{REQUEST_URI}} [R]
</IfModule>
和我的redirects.php脚本,自己正常工作
#!/usr/bin/php
<?php
set_time_limit (0);
$input = fopen ('php://stdin', 'r');
$output = fopen ('php://stdout', 'w');
while (1) {
$original = strtolower (trim (fgets ($input)));
$request = array();
if (preg_match("/[0-9]+/", $original, $request) == 0)
fwrite ($output, "GOOD\n");
$con = mysqli_connect("localhost","user","password","db");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$r = mysqli_query($con, "SELECT media.me_libelle, projet.pro_libelle, personnalite.per_prenom,personnalite.per_nom FROM image, media, projet, image_personnalite, personnalite
WHERE image_personnalite.per_id=personnalite.per_id and image.pro_id=projet.pro_id and projet.me_id=media.me_id and image.img_id=".$request[0]." and image_personnalite.img_id=".$request[0]);
if ($r = mysqli_fetch_array($r))
{
$i = 0;
while (isset($r[$i]) && !empty($r[$i]))
{
$r[$i] = preg_replace("/\s/", "-", $r[$i]);
$i++;
}
$url= strtolower("www.mywebsite.com/"."category/".$r[0]."/".$r[1]."/".$r[2]."-".$r[3]);
}
mysqli_close($con);
fwrite ($output, "http://".$url."\n");
}
?>