0

私は新しい Web アプリケーションで Codeigniter を使用しています。ページにフォームがあり、ポスト経由でサーバーにデータを送信し、そのサーバーはユーザーを私の Web サイトに返しますが、example.com/ のような醜いリンクで get を介してパラメーターを返しますid=12&コード=Xxxx

私がやりたいことは、可能であれば検索して見つけられない場合、これらの醜いリンクをフレンドリーなリンクに変換する方法です( example.com/12/Xxxx )

ありがとう

4

2 に答える 2

4

GETフォームを適切なURLに直接変換することはできません。それらは自動的に?key=valフォーマットになります。

最善のオプションは、GETを適切なURLに変換するためのリダイレクトヘッダーを用意することです。

例えば:

$firstPart = $_GET['myKey'];
$secondPart = $_GET['mySecondKey'];
header('Location: ' . $requestURL . '/' . $firstPart . '/' . $secondPart);
于 2012-08-28T18:46:09.270 に答える
2

get パラメータは基本的にどのWeb APIでも標準であるため、すべての API の修正をハックするよりも仲介を作成するのではなく、それらを頻繁に使用することになるでしょう。

index.php と同じレベル (通常はサイトのルート) に新しいフォルダーを作成します。このフォルダを次のように呼び出しますmiddleman

index.php 経由でルーティングしてはならないファイル内middlemanのアイテムのリストにフォルダーを追加します。.htaccess

これで、使用する API ごとに、middlemanすべてのリクエストをサイトが理解できるものに変換する新しい .php ファイルをフォルダーに作成できます。

次に、外部 API をhttp://yoursite.com/middleman/api_name.phpに向けます。

仲介者を作成する理由は、Code Igniter が get 配列を消去するため、リクエストを処理して意味のあるものにフォーマットする前に削除されるため、Code Igniter 内で変換しようとすると、Code Igniter の範囲外で変換を実行する必要があるためです。 .

ファイルの例は次のようになります:
mysite.pingback.php

<?php
    $from = $_GET['ip'];
    $time = $_GET['time'];
    $post = $_GET['id'];

    header('location: ../mysite/pingback/'.$from.'/'.$post.'/'.$time);
?>

非常に単純なファイルです。ただし、外部 API に変更が加えられても、仲介者を変更するだけでよいため、Code Igniter アプリの動作には影響しないことも意味します。

于 2012-08-28T22:25:08.347 に答える