2016-08-13 7 views
0

私の元のURLは/localhost/site/en/detail.php?id=1 &でしたtitle = Hello%20World と私はきれいなURL:/ localhost/site/EN /ポスト/ 1 /ハロー・ワールドが、問題は、オブジェクトが リライトURL:オブジェクトが見つかりません(.htaccess)

HTMLからの要求

を発見していないことである

<a href="post/'.$rij['id'].'/'.$rij['title'].'"><div class="material"><i class="fa fa-1x fa-chevron-right"></i></div></a> 

PHPファイルとPHPのハンドラ:

$titlestring = mysqli_real_escape_string($db, $_GET['title']); 
$idstring = mysqli_real_escape_string($db, $_GET['id']); 

$query = "SELECT * FROM posts WHERE id=".$idstring; 

I BINDを行う変数の後に

そして、この私のhtaccessfileある

RewriteEngine on 
RewriteBase/
#external redirect from actual URL to pretty one (remove query string) 
RewriteCond %{THE_REQUEST} \s/+detail\.php\?id=$1&?title=([^\s&]+) 
RewriteRule^%1? [R=302,L,NE] 
# convert all space (%20) to hyphen 
RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [N,NE] 
RewriteRule "^(\S*) (\S*)$" $1-$2 [L,R=302,NE] 
# rewrite rule to call actual PHP handler 
RewriteRule ^post/([0-9]+)/([-a-zA-Z_-]+) detail.php?id=$1&title=$2 [L,QSA,NC] 

答えて

0

リクエストを処理しているPHPコードからエラーのように聞こえる「オブジェクトが見つかりません」。タイトルパラメータのスペースをハイフンに置き換えているので、リクエストハンドラでこれを考慮していない場合は、おそらく破損が見られます。

idがユニークである場合(おそらくそうであるはずです)、切り捨てられたtitleを参照しているコードをすべて控除することができます。さもなければ、それを使用するためにあなたがタイトルを古い構造に変換していることを確認する必要があります。

リクエストを処理するコードの例がないと、変更するものの正確な例を提供できません。私はそれが問題だと思っていない

$stmt = $mysqli->prepare("SELECT * FROM posts WHERE id=? and title=?"); 
$title = str_replace('-', ' ', $_GET['title']); 
$stmt->bind_param('is', $_GET['id'], $title); 
+0

:しかし、あなただけ

$stmt = $mysqli->prepare("SELECT * FROM posts WHERE id=?"); $stmt->bind_param('i', $_GET['id']); 

かのようなもののいずれかにそれを変更する必要がありますが

$stmt = $mysqli->prepare("SELECT * FROM posts WHERE id=? and title=?"); $stmt->bind_param('is', $_GET['id'], $_GET['title']); 

ような何かをやっているのは、ふりをしましょう。私は私のコードをupdate'dし、私は本当に私のクエリでタイトルを使用していない、 –

関連する問題