2009-05-25 7 views
1

私は愚かな気分になります。私はちょうどまだ私の脳を包んでいない。 :/動的URLのmod_rewriteルールのヘルプ

私はこのURLを持っている:

http://example.com/a/name/

...私はここでのポイントにしたいこと:

nameが渡さなっているものである

http://example.com/a/index.php?id=name

... id引数としてindex.php

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !index.php 
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L] 

を1回の書き換えチュートリアルでは、あなたのためtry anotherを動作しない場合:あなたを開始するには

私は404または500のいずれかに結果を試してみた何.. :(

答えて

1

編集:ガンボの提案に従ってindex.phpを除外

+0

結果::リクエストが原因可能性構成エラーに10の内部リダイレクトの制限を超え

しかし、最後のスラッシュは必須である場合、コピー先のファイルを除外する必要がない

。 – Ian

+0

ああ、これは、書き直したURLを書き直そうとしているからです。私が始めた場合、^ /?aa /と言うとうまくいきます。ありがとう! – Ian

+1

@イアン要求を書き換えようとしているファイルを除外する必要があります。 – Gumbo

1

たぶん

の線に沿って何か

 
RewriteEngine on 
RewriteBase /a/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA] 

となります。

1

私はあなたがこのURLを見てみましょうお勧め:

http://www.dracos.co.uk/code/apache-rewrite-problem/

提示ソリューションは動作しますが、いくつか注意点がありますが、主については、URLで説明しましたか? URL自体に#を付けてください。

2

末尾のスラッシュをオプションにする場合は、要求を書き換えるファイルを除外する必要があります。さもなければ素敵な無限回帰をします。ここで

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/a/index\.php$ 
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L] 

任意の/a/…で始まる要求が、それは/a/index.php/a/index.phpに書き換えられていません。これに500エラーで

RewriteEngine on 
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]