是否有可能重寫一個url,仍然可以使用查詢?重寫第一個查詢
我的意思是這樣的:http://domain.com/?page=Home&derp=true
,並改寫這樣:http://domain.com/home.htm?derp=true
所以實際上只是改寫第一查詢...
我試着這樣做:
RewriteRule ^([a-z]+).htm$ index.php?page=$1
但是無法通過參數D:
是否有可能重寫一個url,仍然可以使用查詢?重寫第一個查詢
我的意思是這樣的:http://domain.com/?page=Home&derp=true
,並改寫這樣:http://domain.com/home.htm?derp=true
所以實際上只是改寫第一查詢...
我試着這樣做:
RewriteRule ^([a-z]+).htm$ index.php?page=$1
但是無法通過參數D:
哦,老兄,你最好寫下你的問題。只是在最後添加[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);
其實我會喜歡在正則表達式中完成這個工作,對不起:( – Mobilpadde 2012-03-19 17:04:14
@Moiblpadde:沒問題,我在正則表達式中如何做到這一點,你已經刪除了PHP,所以我不知道你實際意味着哪種類型的正則表達式,自然我繼續使用PHP,因爲你最初宣佈。 – hakre 2012-03-19 17:12:39
對不起(再次),我的意思是重寫(在.htaccess中)D:多數民衆贊成在我沒有爲什麼我加入了PHP(主要是因爲幾乎所有的問題都是關於PHP ) – Mobilpadde 2012-03-19 17:16:03
對於URL重寫找你使用和框架等細節,至少可以考慮使用Apache的mod_rewrite引擎
如果mod_rewrite的是不是一個答案考慮,解釋你的應用程序的邏輯。
我使用mod_rewrite ...我只是不知道該怎麼做D:(更新我的問題) – Mobilpadde 2012-03-19 17:03:04
你只是問DERP西港島線的值如果URL被重寫,我仍然會通過?如果是這樣,那麼你的問題的答案是'是'。 – 2012-03-19 16:49:48
是的,路線:-) – alexsuslin 2012-03-19 16:50:46
@Evan只是不能讓它工作得更早,洙,你是怎麼做到的? – Mobilpadde 2012-03-19 16:56:13