2009-08-03 37 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頁面。我已經把上面的代碼放到了我的虛擬主機文件中,我在一些論壇上看到,rewriteMap只有在你有權訪問httpd.conf和虛擬主機的情況下才有效。 mod_rewrite正在我的Windows機器上運行,因爲我能夠運行我的.htaccess文件中定義的一些規則。Apache mod_rewrite和RewriteMap的用法

的map.txt包含

abc 123 
def 456 
ghi 789 
+0

你確定mod_rewrite運行正常,Apache允許.htaccess文件? – Gumbo 2009-08-03 12:52:11

+0

是的,mod_rewrite正常運行並允許.htaccess文件。我能夠運行htaccess中定義的一些規則。 – christian 2009-08-04 00:57:04

回答

1

如果您要求/mysite/mods/…,你的規則應該寧可:

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

但我聲明我的RewriteBase爲/ mysite。即使我添加/ mysite/mods /仍404正在顯示..沒關係,如果我的規則位於我的htaccess文件和rewriteMap的聲明是在我的虛擬主機? – christian 2009-08-03 09:03:50

0

如果您使用RewriteBase,請嘗試去除初始的斜槓規則:

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