1

Apache RewriteMap を使用して URL の一部を書き換えようとしています。

変身したい

www.mywebsite.com/?p=category&id=xxxx

www.mywebsite.com/category/channel/program/personnality

php スクリプトで id を使用して、データベースから必要な変数を取得します。

これまでのところ機能していません。数え切れないほどの時間の調査の後、少し助けを求めることにしました。

ここで提供されている構成の一部を恥知らずに再利用しました

これが私の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");
}
?>
4

0 に答える 0