2016-08-25 9 views
0

のページに$_GET['pid']の値を取得しようとしていますが、それはうまく動作しないようです。.htaccess書き換えルールが機能しません(rewiteモジュールが有効)

.htaccess書き換えルール

RewriteEngine On 
RewriteRule ^products/([0-9]+)$ /products.php?pid=$1 [NC,L] 

のindex.php

<?php 
$i=1; 
while($i <= 10){ 
    echo '<a href="products.php?pid='.$i.'">Products '.$i.'</a><br />'; 
    $i++; 
} 
?> 

products.php

<?php 
if(!isset($_GET['pid'])){ 
    header('location : index.php'); 
} 
else if(isset($_GET['pid'])){ 
    echo 'Product id - '.$_GET['pid']; 
} 
?> 
+0

誰かがコードを見て、どこが間違っているか教えてください。 – Raj

+0

'example.com/products.php?pid = 123'に直接アクセスする場合、同じ問題が発生しますか? 'elseif'(空白なし)はPHPの構文です。 – MrWhite

答えて

0

を次のようにリンクが正しく表示されません意味ですか? あなたのPHPファイルはリンクを出力する必要があります。これはmod_rewriteが後で "翻訳する"ものです。私たちは、「醜い」短いのURLのとprettier.Inあなたのコードを書き換えることhtaccessファイルを使用

<?php 
$i=1; 
while($i <= 10){ 
echo '<a href="products/'.$i.'">Products '.$i.'</a><br />'; 
$i++; 
} 
?> 
+0

FlorianR、はいリンクが正しく表示されません。 products.phpページのpid変数にアクセスしようとすると、エラーが表示されます。 – Raj

+0

、エラーは? –

+0

注意:未定義のインデックス:C:\ wamp \ www \ htaccess \ products.phpの行10 – Raj

0

を、あなたはあなたのhtaccessファイルを変更します。以下の例を参照してください。

RewriteEngine On 
RewriteRule ^(.*)$ products.php?pid=$1 [QSA,L] 

次に、URLを変更します。

<?php 
     $i=1; 
     while($i <= 10){ 
     echo '<a href="products.php/'.$i.'">Products '.$i.'</a><br />'; 
     $i++; 
     } 
    ?> 
関連する問題