2012-03-26 18 views
1

を動作しません。UrlRewritingルールは、私は次のPHPコードを持って

これで、mod_rewrite()を使用しようとしました。これは私の.htaccessにあるものである:

RewriteEngine On 
RewriteBase /PHPTest/ 

RewriteRule ^article_([0-9]+)$ index.php?article=$1 

あなたが見ることができるように、私は記事では、変数をゲットしよう。..

htaccessファイルは、例えば、artcile_27を理解しないこのしかしdoesntの仕事.. 、記事= 27 ..

なぜですか?

私はリンクを押すたびに成功ワードを出力する必要があります。問題はそうではないということです。

答えて

1

あなたのルールは次のようになります。

RewriteRule ^index.php?article_([0-9]+)$ index.php?article=$1 

しかし、私はこの方法ではmod_rewriteを使用することを疑問視したいです。

まず、あなたのURLが常にindex.php?article_27の場合は、$_SERVER['QUERY_STRING']を使用して「article_27」に直接アクセスできます。mod_rewriteはまったくありません。

mod_rewriteを使用する場合は、URLを/PHPTest/article/27に設定してください。

RewriteRule ^article/([0-9]+) index.php?article=$1 

以上も次の2つの素敵なものを与える/PHPTest/article/27/title_of_article_hereを、できるようになります:サーバー側を取得するのは簡単ですので、IDはまだそこにあり、それは人間として読み取ることがうれしいですので、名前はURLであります検索エンジンに役立ちます。 URLバーを見ると、stackoverflow自体がこのメソッドを使用していることがわかります。

+0

うわー..信じられないほど、私はこの問題で一日中立ち往生した! – BlackFire27

1

オープンこの:http://localhost/PHPTest/article_27

それが動作する場合、それはあなたが作品を書き換えることを意味します。その場合は、あなたがしなければならないすべては、HTMLを変更です:

<a href="http://localhost/PHPTest/index.php?article_27" >Click me</a> 

は次のようになります。

<a href="http://localhost/PHPTest/article_27" >Click me</a> 

というか、単に:

にあなたのコードの移植になり
<a href="/PHPTest/article_27" >Click me</a> 

別のホスト名、ポート、プロトコル...

2

あなたが書いたルールはリンクhttp://localhost/PHPTest/article_27と一致しますuは本当に(少なくとも私のoppionion、異例のURLで、ある)http://localhost/PHPTest/index.php?article_27がマッチしたURLを持つようにしたい、正しい書き換えルールは以下のようになります。

RewriteRule ^index\.php\?article_([0-9]+)$ index.php?article=$1 

あなたは後に全体の一部を見ています最後のスラッシュ。

関連する問題