2016-04-08 35 views
0

URLが1つ以上のパラメータを持つことがあり、それに応じて書き直したいと思います。複数のパラメータを持つURLを書き直します

次のようなURLは次のとおりです。

/index.php?pagetitle=Home 

私は、以下のものを使用してする方法を表示するには、このURLを取得するために管理している:

/Home 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([0-9a-zA-Z]+) index.php?pagetitle=$1 [NC,L] 

私もしたいと思います同じURLを持つことができますが、記事IDは

です私はこのように表示したいと思います210

.com/Home/20 

しかし、私はそれが複数のパラメータ上で動作するように取得する方法を見つけ出すように見えることはできません。

UPDATE: [OK]をので、私は以下の使用して仕事を得るために管理:? のindex.phpページタイトル= $ 1 &情報でarticleID =として表示する$ 2

: .COM /ホーム/ 20

を私はそれをさらに進歩させ、記事のタイトルを使用できるようにしようとしました。私が試したルールは次のとおりです。

RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))(?:/([0-9]*))?/?$ index.php?pagetitle=$1&articletitle=$2&articleid=$3 [NC,L,QSA] 

ように表示していました: .COM /ホーム/ ArticleTitle/20

しかし、それはいずれかが、私は事前に再び間違ったと感謝をやっているのか分からない私のために仕事をしたいdoesntの。

http://karpium.co.uk/Home/Baits/20 - このURLは

http://karpium.co.uk/Home作品 - しかし、それだけでページタイトル=と情報でarticleIDを使用しないよう、このURLのdoesntの仕事=

+0

私はこれはかなりのURL Apacheのルーティングのまわりで私の頭を強打するために使用さが、私はそれはPHPで行う方が簡単です実現しました。 SLIM PHPを試してみてください。 "これは、簡単な安らかなルーティングと非常に高い性能と、Apacheよりも機能が豊富です。confファイル – peter

+0

htaccessでそれをしようとしてくれた主な理由は、大学のプロジェクトと私たちはできるだけ小さなスクリプトでウェブサイトを作成する必要がありますが、私は将来のプロジェクトを探していますありがとうございます – Scorpion

答えて

-1

あなたは、次のルールを使用することができます

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9]*))?/?$ index.php?pagetitle=$1&articleid=$2 [NC,L,QSA] 
+0

いくつかの説明を追加できますかこの答えに? –

0

私は次のような3種類の書き換えルールを使って修正したようです。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([0-9a-zA-Z]+)$ index.php?pagetitle=$1 [NC,L,QSA] 
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))?/?$ index.php?pagetitle=$1&articletitle=$2 [NC,L,QSA] 
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))(?:/([0-9]*))?/?$ index.php?pagetitle=$1&articletitle=$2&articleid=$3 [NC,L,QSA] 

私のために正規表現のいくつかの部分に光を当てはめることができれば、それは非常に高く評価されます:

次の意味は?

?/

?/?再びすべての助けを

おかげで:)

+0

**?:**は、非キャプチャグループに使用されます。 **(?:/(foo))**は** foo **をキャプチャし、キャプチャした値を** $ 1 **として保存します**なし:**キャプチャグループ**(/(foo))**キャプチャ**/foo **。 ** /?**は**/**がオプションであることを意味します。あなたは正規表現について読むべきです。サイトやチュートリアルがたくさんあります。 Googleを検索します。 – starkeen

関連する問題