私の元のURLは次のとおりです。
http://example.com/video_in.php?video_id=1
リンクを次のようにします:
http://example.com/shaandaar/kinna_sona.html
shaandaar
とkinna_sona
は、データベース内のスラッグです。
これは私の.htaccessファイルです
AddDefaultCharset utf-8
Options +FollowSymlinks -Indexes
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^artist/(css|js|images)/(.*)?$/$1/$2 [L,QSA]
RewriteRule ^artists/([^/]*)\.html$ artist_search.php?&letter=$1 [QSA,L]
RewriteRule ^albums/([^/]*)\.html$ album_search.php?&letter=$1 [QSA,L]
RewriteRule ^artist/([^/]*)\.html$ artist_in.php?artist_id=$1 [QSA,L]
RewriteRule ^album/([^/]*)\.html$ album_in.php?&album_id=$1 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)\.html$ song_in.php?album_id=$1&song_id=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)\.html$ video_in.php?album_id=$1&video_id=$2 [QSA,L]
すべてのリンクが動作していますaxceppt video_in.php
What should I write in my *.htaccess* file?
リンクを
http://example.com/shaandaar/kinna_sona.html
にしたいshaandaarとkinna_sonaは、私のデータベースのナメクジです。 .htaccessファイルに何を書くべきですか?
これが最良の方法です。
RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)\.html$ /video_in.php?firstslug=$1&secondslug=$2 [L]
RewriteRuleでは、^
が一致を開始します。これ:([^/]+)
は次のように分類されます。
[^/]
は、/
以外のすべてに一致することを意味します。書き換えエンジンを混同しないための良い方法です。
プラスの意味は1つ以上に一致します。したがって、[^/]+
は、/
がない限り、任意の数の文字に一致することを意味します。
その後、すべてを括弧で囲んで、後で使用できるようにします。ブラケットの最初のセットは#1、2番目のセットは#2です。
次に、ドットを一致するリテラル文字として指定する方法のため、ドットの前にバックスラッシュを追加しました。
それからもちろんhtml
もそれに一致します。
マッチングを終了するには、$
を使用します。
一致するものが見つかると、/video_in.php?firstslug=(first captured value)&secondslug=(second captured value)
はバックグラウンドでロードされ、フレンドリーURLはWebブラウザーに残ります。
あなたの場合、およびURLを使用する場合、値はそれぞれshaandaarとkinna_sonaです。その後、スクリプトを使用して値を読み取ることができます。
偏執的なスタイルにしたい場合は、このスクリプトを使用して、値が正しく処理されていることを確認できます。
<?php
print_r($_GET);
exit();
?>
スクリプトを実行すると、名前と値のペアを含む配列が1行に1つずつ表示されます。
RewriteRule ^([^/]*)/([^/]*)\.html$ song_in.php?album_id=$1&song_id=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)\.html$ video_in.php?album_id=$1&video_id=$2 [QSA,L]
最後の2つのディレクティブと競合しています。両方に同じpatternを使用しているため、これらの要求はすべてsong_in.php
に送信されます。 2番目の(video_in.php
)ディレクティブは処理されません。
/shaandaar/kinna_sona.html
(たとえば)が曲またはビデオのいずれかを参照する場合、URL内の曲とビデオを区別する必要があります。