2

私のURLを美しくしようとしているのですが、私のURLはそのようなものです

   http://www.mysite.com/details.php?id=19&object=1

object=1 (ビデオ) または object=0 (記事)

このURLをに変更したい

    http://www.mysite.com/videos/19

object =1 の場合は動画を意味すると述べたので、もちろん私は動画を作成します

オブジェクト =0 の場合

これ欲しい

    http://www.mysite.com/articles/19

いくつかのチュートリアルからこれを使用しようとしましたが、うまくいきませんでした。

    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^videos/([a-zA-Z]+)/([0-9]+)/$ details.php?object=$1&id=$2

RewriteCondまた、オブジェクトが 1 または 0 であるかどうかを確認するために if 条件を実行する方法、 1 の場合は他の記事のビデオを印刷します。

どんな助けでも大歓迎です。

4

1 に答える 1

1

ここであなたの場合に使用することRewriteMapをお勧めします。これを使用する方法のサンプルを次に示します。

  1. httpd.conf次の行をファイルに追加します。

    RewriteMap objMap txt://path/to/objectMap.txt
    
  2. /path/to/objectMap.txt次のようなテキスト ファイルを作成します。

    articles 0
    videos 1
    
  3. 以下の .htaccess ファイルに次の行を追加しますDOCUMENT_ROOT

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    
    RewriteRule ^([^/]+)/([0-9]+)/?$ /details.php?object=${objMap:$1}&id=$2 [L,QSA]
    

利点:この設定を行う/path/to/objectMap.txtと、新しいオブジェクト ID マッピングがあれば、新しいルールを追加する必要なく、いつでもファイルを編集または再作成できます。

更新: Apache 構成を制御できない場合は、次のように複数の書き換えルール (各オブジェクト ID マッピングごとに 1 つ) を処理する必要があります。

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+details\.php\?id=([^&]+)&object=1\s [NC]
RewriteRule ^ /videos/%1? [R=302,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+details\.php\?id=([^&]+)&object=0\s [NC]
RewriteRule ^ /articles/%1? [R=302,L]

RewriteRule ^videos/([0-9]+)/?$ /details.php?object=1&id=$1 [L,QSA,NC]
RewriteRule ^articles/([0-9]+)/?$ /details.php?object=0&id=$1 [L,QSA,NC]
于 2013-07-17T20:42:54.007 に答える