2013-05-31 87 views
-4

我需要做這樣的事情:URL http://domain.com/view.php?show=my_article_name應該被重定向到http://domain.com/my_article_name/我該怎麼做?提前致謝。使用.htaccess追加查詢字符串到URL

+3

嗨,在這裏堆棧溢出和更廣泛的互聯網上有一百萬資源。請始終先搜索。謝謝! –

+0

不幸的是,我發現只有這個版本,但它不適合我:'RewriteRule^blog /([ - a-zA-Z0-9 _] +)/? view.php?&show = $ 1 [L]',即重定向到http://domain.com/blog/my_article_name –

回答

5

你可以試試這個規則:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+view\.php\?show=([^\s]+) [NC] 
RewriteRule^/%1? [R=302,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+)$ /view.php?show=$1 [L,QSA,NC] 

一旦你驗證它是否工作正常,更換R=302R=301。避免在測試mod_rewrite規則時使用R=301(永久重定向)。

+0

謝謝,它適合我! –

+0

不客氣,很高興它解決了。 – anubhava

1

非常少見有人想要一個SEO不友好的URL重定向到一個搜索引擎友好的一個,通常是周圍的其他方法,所以請確保您想要的:

http://domain.com/view.php?show=xyz => http://domain.com/xyz/ 

,而不是更常見:

http://domain.com/xyz     => http://domain.com/view.php?show=xyz 

你會使用這樣的事情來捕捉查詢字符串,並將其傳遞給URL(我已經添加到R=301標誌,但如果你不想永久重定向,與R替換此) :

RewriteBase /
RewriteCond %{QUERY_STRING} ^show=(.*)$ [NC] 
RewriteRule ^view.php$   %1/   [NC,R=301,L] 

未經測試,因爲我目前沒有運行Apache,但如果它有幫助但不正確,請給我工作代碼來修復我的答案。

+0

不幸的是它不適用於我。我得到了404個。 –

+0

檢查access.log和error.log,Apache問題通常很容易調試。 –

+0

@RedOctober - 編輯,告訴我,如果修復它。注意:在測試時,您可能想使用'R'而不是'R = 301',因爲有些瀏覽器長時間緩存301s。 –

相關問題