2009-08-03 16 views
0
Options +FollowSymLinks 

RewriteEngine On 
RewriteMap name2id txt:/path/to/map.txt 

RewriteRule ^/mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L] 

初めてrewriteMapでURLの書き換えを行うとき。上記のコードがありますが、ブラウザにhttp://example.com/mysite/mods/abc.htmlを実行すると404ページが返されます。上記のコードをApacheの設定で仮想ホストファイルに入れました。いくつかのフォーラムで、rewriteMapは、httpd.confと仮想ホストでアクセスできる場合にのみ動作します。私の.htaccessファイルで定義されたいくつかのルールを実行することができたので、mod_rewriteはWindowsマシン上で実行されています。Apache mod_rewriteとRewriteMapの使用

map.txtあなたが/mysite/mods/…を要求した場合、あなたのルールはかなりあるべき

abc 123 
def 456 
ghi 789 
+0

mod_rewrite Apacheが.htaccessファイルを許可していますか? – Gumbo

+0

はい、mod_rewriteが正しく実行され、.htaccessファイルが許可されています。私はhtaccessで定義されたいくつかのルールを実行することができました。 – christian

答えて

1

が含まれています:あなたがでRewriteBaseを使用している場合は、中に最初のスラッシュを削除してみてください

RewriteRule ^/mysite/mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L] 
+0

しかし私は/ mysiteとして自分のRewriteBaseを宣言します。さらに、/ mysite/mods /を追加しても404が表示されています。私のルールがhtaccessファイルにあり、rewriteMapの宣言が私の仮想ホストにある場合は大丈夫ですか? – christian

+0

* ^/mods *ではなく*^mods *でルールを開始しようとしましたか? –

+0

はい、試したが、まだ404が表示されています。 – christian

0

ルール:

RewriteRule ^mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L] 
+0

私のコードは動作していますが、http://example.com/mysite/mods/abc.htmlを実行すると、クエリ文字列IDをエコーし​​たときに0が得られました。私が間違っている場合は、abc w/cと同等のものが123が表示されることを期待しているので私を修正してください。 – christian

関連する問題