0

次の URL が必要です。

http://www.mydomain.com/search/string

に行く

http://www.mydomain.com/dir/search.php?param=string

これは私の書き換えルールです:

RewriteRule ^search/(string)$ /dir/search.php?param=$1 [NC,L]

私を夢中にさせているのは、それがうまくいくということです。結果ページ内のすべてのリンクには、a要素内に「dir」があります。たとえば、マウスをリンクの上に置くと、

http://www.mydomain.com/search/myawesomescript.php

ステータスバーで。正しいURLは

http://www.mydomain.com/myawesomescript.php

.htaccess ファイルはルートにあります。「検索」自体が書き換えに挿入されるのはなぜですか? 私が理解できないのは何ですか?

4

1 に答える 1

0

RewriteRule は、リクエストが search/(string) に届いた場合、/dir/search.php で処理する必要があることを apache に伝えていますが、表示される URL を変更することは何もしません。

あなたが話していることは、次のようなものによって達成されます:

RewriteRule .* /dir/search.php?param=$1 [NC,L]

これはすべてを search.php にリダイレクトすることに注意してください。そのため、正規表現を変更するか、いくつかのRewriteCondルールを使用してスコープを制限する必要があります。

于 2012-06-16T22:49:34.690 に答える