2011-09-06 201 views
0

我在PHP中使用URL這樣一個Web應用程序: https://www.domain.com/?mod=test&act=view的.htaccess mod_rewrite的301重定向問題

我的問題是,當我試圖使用mod_rewrite將用戶重定向到新的鏈接: https://www.domain.com/view-test

我有我的.htaccess下面的規則:

RewriteRule ^\?mod=test&act=view$ /view-test [L,R=301] 

如果我刪除前導「?」從上述規則重定向的作品,但obigouly我得到一個404錯誤。但如果我保持它沒有任何反應

任何人都可以幫忙嗎?

回答

1

可以爲view-test創建一個新的規則:

RewriteEngine On 

RewriteRule ^mod=test&act=view$ /view-test [L,R=301] 

# new rule for view-test 
RewriteRule ^view-test$ /index.php [L] 

更新:

這完美的作品對我來說:

Options +FollowSymlinks 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^/index\.php$ 
RewriteCond %{QUERY_STRING} ^mod=test&act=view$ 
RewriteRule ^(.*)$ /test-view? [L,R=301] 

RewriteRule ^test-view/?$ /index.php [L] 

獲取的值:

<?php 

$request = str_replace("/", "", $_SERVER['REQUEST_URI']); 
$request = explode("-", $request); 

print_r($request); 

輸出:

Array 
(
    [0] => test 
    [1] => view 
) 

希望這有助於!

+0

我想我沒有正確解釋......我的問題是,我的網址是www.domain.com/?mod=test&act=view,我根本無法匹配「?」字符在重定向指令中...感謝您的回覆! – jribeiro

+0

好的,我會更新答案 – tttony

+0

那種作品。但最後一條規則將我發送給index.php,我想將其重定向到index.php?mod = test&act = view。如果我將index.php替換爲實際頁面,我最終會在循環中出現錯誤。對不起,我的問題 – jribeiro