1

私は数日かかったphpスクリプトの小さな部分に取り組んできました(私は初心者です)

これが私のコードです:

<?php
require ('connect.php');

$requete = mysql_query('SELECT * FROM videos WHERE id="'.$_GET['id'].'"') or die(mysql_error());

if(mysql_num_rows($requete)=='0'){
}else{
    while($resultats = mysql_fetch_array($requete)){ 
?> <!-- some html content --> <?php
    }
}

mysql_close(); 
?>
</body>
</html>

このスクリプトは、IDに従って、データベースからコンテンツを取得します。

http://localhost/mysite/video/atest.php?id=1

いくつかのキーワードを取得するために、どの種類のURL書き換えを使用する必要があるのか​​知りたいのですが。そのようなURLが欲しいのですが:

http:// localhost / mysite / video / 1-first-video-title

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.(css|png|jpe?g|gif|js|mp3|3gp|ico)$
RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+) atest.php?id=$1&url=$2[L,QSA]

何か問題がありましたか?

それも使いたいのですが、画面に何も表示されません(このページが見つかりません)。

if($resultats["url"]!=$_GET["url"]) {
  header ("location:/mysite/video/".$resultats["url"]."-".$resultats["id"]);
}

私のテーブルを検索して、URLキーワードを見つけます。

ありがとうございました!

4

1 に答える 1

0

ここでのあなたの問題は実際には非常に単純かもしれないと思います:RewriteRuleは変数を間違った方法でキャプチャしRewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+) atest.php?id=$1&url=$2[L,QSA]て「atest / example-42」に一致し、それを「atest.php?id = example&url=42」にマップします-$1は最初のものを参照しますブラケットのセット、および2番目に$2。print_r()またはvar_export()の_$_GET

ちなみに、その正規表現は、IDが最後に来る必要があると主張していないため、一部のエッジケースでうまくいかない可能性があります。したがって、「atest/example-2-word-42」はIDを2として選択することになります。 、42ではありません。「$」を追加すると、次の問題が修正されます。RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+)$ atest.php?id=$1&url=$2 [L,QSA]

書き換えルールがまったく機能しない場合(あなたの質問は結果が何であるかが明確ではありません)、Apacheの.htaccess処理に微妙な点がある可能性があります...

于 2012-08-06T03:22:07.410 に答える