2011-04-09 145 views
2

我有一個新聞(博客)的網站,返回以下格式的URL時,個別職位選擇:URL重寫 - 查詢字符串

website.net/sitenews.php?q=posts/view/postname/12 

我要求重寫URL,以便它讀取:

website.net/sitenews.php/posts/view/postname/12 

或其中?q=被去除?,使URL可以通過Facebook的喜歡按鈕爲Facebook網址棉短絨不解析查詢字符串來訪問的目的,去除任何其他方式。

在htdocs目錄的.htaccess在根目錄下我都試過文件如下:

Options +FollowSymLinks 

RewriteEngine on 

RewriteCond %{QUERY_STRING} q= 

RewriteRule (.*) website.net/sitenews.php/$1? [R=301] 

這成功地消除了q=?但沒有返回的字符串(posts/view/postname/12)的其餘部分和URL現在看起來如下:

website.net/sitenews.php/sitenews.php 

有沒有人有任何建議來幫我完成這個url_rewrite?

回答

2

試試這個,而不是在你的.htaccess:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC] 
RewriteRule ^(.*)$ /$1/%1? [R=301,L,NE] 

R=301 will redirect with https status 301 
L will make last rule 
NE is for no escaping query string 

%1 is capture group for query string q= (whatever comes after q=) 
$1 is your REQUEST_URI 
+0

anubhava,上面的代碼生成website.net/sitenews.php/posts/view/postname/12/posts/view/postname/12/posts/view/postname/12 – Hamy 2011-04-10 18:01:25

+0

@哈米:對不起,我有一個未成年人上述規則中的錯字導致了無限的重新方向。請參閱我上面編輯的答案。我已經測試過它,它應該沒有問題。 – anubhava 2011-04-10 18:37:09

+0

感謝您的回答,但我怎樣才能擺脫**。php **以及生成的鏈接website.net/sitenews.php/posts/view/posts? – Rajat 2012-10-21 05:44:48