2012-03-04 13 views
1

私は自分のようにここで同じ質問をしています:複数のパラメータを書き直すには?どうやってやったのか分かりましたが、うまく動かないようです。.htaccess - 複数のパラメータ

私はこのように見えるために私のリンクをwan't:link.dk/profil/2/overview

そして、私の.htaccessは、次のようになります

#profil.php?id=? to profil/? 
RewriteRule ^profil/(.*)$ profil.php?id=$1 [L] 
RewriteRule ^profil/(.*)/(.*)$ profil.php?id=$1&do=$2 [L] 

それがアクセスできるようにしています/ profil/2を指定します。だから私は2行持っている。これが正しい方法であるかどうかはわかりません。

/profil/2は完璧に動作し、しばらくの間働いています。だからここに心配はありません。しかし、私は第3のパラメータをキャッチすることはできません。

私はまた、.htaccessファイルでこれらの2を抱えている:私が書いた最初の二つの前

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/ 
RewriteRule ^(.*)index\.php$ /$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 


2つのパラメータを持つものだけを使用している場合は動作しています。しかし、それは/ profil/2 ofcとはうまく動作しません。 profil.php?id = 2 & do = overviewでURLを入力するとページにアクセスできます。私の自己を発見

答えて

2

:。

RewriteRule ^profil/([^/]+)$ profil.php?id=$1 
RewriteRule ^profil/([^/]+)/([a-z]+)$ profil.php?id=$1&do=$2 

を* `

+1

abitはunpreciseと不安定:-)ようだ*'非常に明確に定義されています。 "' * '"は貪欲な試合です - できるだけ長く合っています。このタイプのマッチでは、貪欲でないマッチ '。*?'を使うことができます。たとえば、 '(。*?)/'は任意のチャーチャシーケンスにマッチすることを意味しますが、最初に/ – TerryE

+0

ルールはありますが、あなたのソリューションはよりエレガントです。 – Gerben

関連する問題