2012-06-23 29 views
0

我試圖建立一個簡單的重寫規則,這樣類似的mod_rewrite似乎並沒有爲這個重寫規則

mysite.com/admin 

成爲

mysite.com/new/admin 

我已經嘗試了以下工作:

RewriteEngine On 
RewriteRule ^admin.* new/admin [L] 

但是,這似乎並沒有工作。它只會導致一個404錯誤,這與我以前所得到的一樣。我的日誌似乎沒有顯示任何東西。這裏是我的配置文件:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName mysite.com 
    DocumentRoot /var/www 

    <Directory /> 

    Options FollowSymLinks 
    AllowOverride None 
    </Directory> 
    <Directory /var/www/> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
    </Directory> 

如果有人知道正確的重寫規則來解決這個問題,那將是最優秀的!

回答

2

試試這個:

RewriteEngine On 
RewriteBase/
RewriteRule ^admin(.*) new/admin$1 [L,R,QSA] 

旗解釋:

  • L - 最後一條規則(處理將在該點停止)
  • R - 重定向(沒有這個標誌,Apache會做子請求和仍會顯示原來的網址到瀏覽器)
  • QSA - 追加原始查詢字符串
+0

它的工作方式...如果我把它放在我的/ var/www目錄塊下,它會重定向到mysite/var/www/new/admin,如果我把它放在兩個目錄塊之外,它會創建mysite.com//admin /(注意double /),並且它不會在另一個區塊 –

+0

內執行任何操作,您需要將它放在與您的DocumentRoot相對應的Directory區塊中。哦,並添加'RewriteBase /' – poncha

+0

RewriteBase做到了!謝謝! –

0

能不能請你用斜線以下..

重寫規則^ *管理/新/管理[L]

+0

似乎不工作 –

+0

你可以設置你的日誌級別爲apache調試,訪問URL並查看打印在error.log中的內容嗎? – user1452132