2012-09-27 48 views
0

我想使用mod_rewrite只保留url中的查詢字符串,並刪除index.php?p =。.htaccess在URL中重寫查詢字符串

例如,這個鏈接

http://domain.com/index.php?p=page-name-with-dashes 

進入

http://domain.com/page-name-with-dashes.html 

所有網頁都通過控制腳本的index.php和查詢P =名字載入,這樣

<?php 
$page = isset($_GET['p']) ? $_GET['p'] : 'home'; 
... 
require_once 'content-' . $page . '.php'; 
... 
?> 

我已經嘗試了以下所有變體,但都沒有工作 - 有些人給404一些給500錯誤。

#RewriteRule ^index.php?p=(.*) $1/ 

#RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L] 

#RewriteRule ^(.*)$ index.php?p=$1 [NC,L,QSA] 

我在做什麼錯?我對htaccess規則不太瞭解,所以請原諒我的新手問題。

回答

1

試試這個:

RewriteRule ^(.*).html$ index.php?p=$1 [L] 

但要注意,如果您有多個的情況下(例如一些其他類型的URL重寫的),要小心的RewriteRules的排序,因爲你可以很容易地覆蓋一個與另一個..

+0

有一個小的修改,它的工作原理:RewriteRule ^(。*)。html $ index.php?p = $ 1 [L] –

+0

我很抱歉,我剛從我上一個項目.htaccess文件複製了一行。並沒有修改它,所以我現在編輯我的答案:) – Develoger