2011-07-13 46 views
1

私は検索しましたが、ここのすべての例は私のためには機能しません。Mod_rewriteルールを変更して記事タイトルをURLに追加します

I have a $_SESSION['title']; //Session variable contains title from calling page 

$title = $_SESSION['title']; //local variable contains article title 

のは、記事のタイトルを言ってみましょうは、ニュース・オブ・-日 私はそのような何かを試してみてください

http://www.newstoday.com/readnews/12/news-of-the-day 

BTW http://www.newstoday.com/readnews/12 //this works 

RewriteEngine on 
RewriteRule ^readnews/([0-9]+)$ readnews.php?news_art_id=$1 

答えて

1

に自分のルールを変更するにはどうすればよいです

RewriteEngine on 
RewriteRule ^readnews/([0-9]+)(/(.*))?$ readnews.php?news_art_id=$1&other_params=$3 

を追加しました後で:idの後ろにあるものは、other_params GET paramに入ります。

+0

これをHTML内のアンカーリンクで使用するにはどうすればよいですか? –

+0

あなたのURLの両方 http://www.newstoday.com/readnews/12/news-of-the-day http://www.newstoday.com/readnews/12 readnews.phpスクリプトにリダイレクトされます。あなたは$ _GET ['news_art_id']と "news-of-the-day"(2番目の場合は "")から "12" を得ることができます。 php: $ id = 0からこのようなリンクが生成されました。 //これはあなたのIDだとしましょう $ title = $ _SESSION ['title']; $ link = 'http://www.newstoday.com/readnews/' $ id。 '/'。 $タイトル; –

1

正規表現が正しくありません。それは次のようになります。

RewriteEngine on 
RewriteRule ^readnews/([0-9]+) readnews.php?news_art_id=$1 

$ URLの終わりを示していますが、IDの後にコンテンツをしたい、あなたはそれをすべての

0

ファーストを削除する必要があり、あなたがPHPを区別することができることを確認する必要があります2つのURLの間。

RewriteRule ^readnews/([0-9]+)(\/[a-z-]+)?$ readnews.php?news_art_id=$1&title=$2 

これはタイトルがURLに存在する場合$_POST['title']news-of-the-dayが含まれているでしょう - そう$_POST['title']が空になります。その後、PHPによって設定されているかどうかを確認し、そうでない場合はリダイレクトすることができます:

if (empty($_POST['title'])) 
    header("Location: /readnews/".$_POST['news_art_id']."/".$_SESSION['title']); 
+0

あなたの例によって...アンカーリンクがあるのは正しいですか?..... News healine

+0

はい、 '/ readnews/12'と'/readnews/12/title'の両方が動作するはずです。前者は後者にリダイレクトする必要があります。 – kba

関連する問題