2011-10-10 72 views
-1

好吧,我只是想爲一個網站設置一個簡單的重寫規則。 首先,在httpd.conf我Mod_rewrite頭痛

LoadModule rewrite_module modules/mod_rewrite.so 

然後,在一個單獨的文件我有這個別名設置

Alias /vworker/ "f:/vWorker/" 

<Directory "f:/vWorker/"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
     Order allow,deny 
    Allow from all 
</Directory> 

好了現在,所以網站的目錄是

f:/vWorker/urlmask 

在那裏我有一個.htaccess文件說這個

RewriteEngine on 
RewriteRule ^redirect/([0-9]+)/?$ index.php?redirect=$1 [L] 
現在3210

,我想,就是如果我去的URL http://localhost/vworker/urlmask/redirect/3161513它實際上將調用http://localhost/vworker/urlmask/index.php?redirect?3161513

從我的觀點一切的點似乎是建立正確的,如果我把亂碼在我的.htaccess文件我得到一個服務器錯誤,所以我知道它正在讀取它。

我最終得到的是一個頁面,顯示「未找到。在此服務器上未找到請求的URL/vworker/urlmask/redirect/94173336828903446」。 任何想法我做錯了什麼?

+0

如果你忽略了「^」,它會起作用嗎? –

回答

0

一般來說,只要你有Alias,你將需要一個RewriteBase使事情按預期工作。

在你的情況,你應該有

RewriteBase /vworker/urlmask/ 

在相同的.htaccess的規則。

+0

似乎沒有幫助。 –

+0

如果URL是localhost/vworker/urlmask/...並且.htaccess位於urlmask文件夾中,則應該是正確的'RewriteBase'。你可以添加諸如'RewriteLogLevel 2'之類的東西來獲得重寫過程的一些日誌(更高的數字給出更多信息)。 –

+0

原來我有一個名爲redirect.sql的文件,所以當我重命名它的工作。 –