2012-03-19 93 views
0

是否有可能重寫一個url,仍然可以使用查詢?重寫第一個查詢

我的意思是這樣的:http://domain.com/?page=Home&derp=true

,並改寫這樣:http://domain.com/home.htm?derp=true

所以實際上只是改寫第一查詢...

我試着這樣做:

RewriteRule ^([a-z]+).htm$ index.php?page=$1

但是無法通過參數D:

+1

你只是問DERP西港島線的值如果URL被重寫,我仍然會通過?如果是這樣,那麼你的問題的答案是'是'。 – 2012-03-19 16:49:48

+0

是的,路線:-) – alexsuslin 2012-03-19 16:50:46

+0

@Evan只是不能讓它工作得更早,洙,你是怎麼做到的? – Mobilpadde 2012-03-19 16:56:13

回答

1

哦,老兄,你最好寫下你的問題。只是在最後添加[QSA]Docs,它應該工作:

RewriteRule ^([a-z]+).htm$ index.php?page=$1 [QSA] 

這是一點問題都沒有,那只是一些在PHP中簡單的字符串操作,你甚至不需要一個正則表達式是:

function rewrite_url($url) { 
    list($prefix, $query) = explode('?', $url, 2) + array('',''); 
    parse_str($query, $vars); 
    if (isset($vars['page'])) { 
     $prefix .= $vars['page'] . '.htm'; 
     unset($vars['page']; 
    } 
    return $prefix . '?' . http_ build_ query($vars); 
} 

如果你願意,你可以做到這一點與正則表達式,太:

$url = preg_replace('/^(.*)$/e', 'rewrite_url(\'$1\')', $url); 
+0

其實我會喜歡在正則表達式中完成這個工作,對不起:( – Mobilpadde 2012-03-19 17:04:14

+0

@Moiblpadde:沒問題,我在正則表達式中如何做到這一點,你已經刪除了PHP,所以我不知道你實際意味着哪種類型的正則表達式,自然我繼續使用PHP,因爲你最初宣佈。 – hakre 2012-03-19 17:12:39

+0

對不起(再次),我的意思是重寫(在.htaccess中)D:多數民衆贊成在我沒有爲什麼我加入了PHP(主要是因爲幾乎所有的問題都是關於PHP ) – Mobilpadde 2012-03-19 17:16:03

0

對於URL重寫找你使用和框架等細節,至少可以考慮使用Apache的mod_rewrite引擎

如果mod_rewrite的是不是一個答案考慮,解釋你的應用程序的邏輯。

+0

我使用mod_rewrite ...我只是不知道該怎麼做D:(更新我的問題) – Mobilpadde 2012-03-19 17:03:04