2016-03-04 100 views
1

那麼我已經嘗試了很多代碼,但仍無法弄清楚最新的工作是否正確。.htaccess帶兩個變量的乾淨url

嗯,我得到這個代碼:

#--Redirect from "/?page=foo" to "/page/foo"--# 
RewriteCond %{THE_REQUEST} /\?page=([^\s]+) [NC] 
RewriteRule^/page/%1? [NC,L,R] 
#--Rewrite "/page/foo/" to "/?page=foo"--# 
RewriteRule ^page/([^/]+)/?$ /?page=$1 [NC,L,QSA] 

#--Redirect from "/search.php?search=foo" to "/search/foo"--# 
RewriteCond %{THE_REQUEST} /search\.php\?search=([^\s]+) [NC] 
RewriteRule^/search/%1? [NC,L,R] 
#--Rewrite "/search/foo/" to "/search.php?search=foo"--# 
RewriteRule ^search/([^/]+)/?$ /search.php?search=$1 [NC,L,QSA] 

#--Redirect from "/post.php?id_post=foo" to "/post/foo"--# 
RewriteCond %{THE_REQUEST} /post\.php\?id_post=([^\s]+) [NC] 
RewriteRule^/post/%1? [NC,L,R] 
#--Rewrite "/post/foo/" to "/post.php?id_post=foo"--# 
RewriteRule ^post/([^/]+)/?$ /post.php?id_post=$1 [NC,L,QSA] 

# Support new SEO-friendly URLs 
RewriteRule page/(.*) ?page=$1 
RewriteRule search/(.*) search.php?search=$1 
RewriteRule post/(.*) post.php?id_post=$1 

和他們的工作相當不錯,但現在我想提出一個加入他們的喜歡:

RewriteRule search/(.*)/page/(.*) search.php?search=$1&page=$2 

鏈接工作得很好,但網址不會自動更改像其他人上我想知道它是否可能,如果是的話請幫助:)

感謝先進。

+0

好了,你可以看到別人正在使用的模式。首先有一個條件和規則將舊格式重定向到新格式,然後是將新格式重新寫回舊/實際格式的規則。所以請按照同樣的原則爲這個新的一個,你會一切設置。 –

+0

我已經嘗試過,沒有工作,我可以在這裏粘貼我做了什麼,你可以修復它? – luckr

回答

2

您可以使用以下規則:

RewriteEngine on 

#--Redirect from "/search.php?search=foo&page=bar" to "/search/foo/page/bar"--# 
RewriteCond %{THE_REQUEST} /search\.php\?search=([^&]+)&page=([^\s]+) [NC] 
RewriteRule^/search/%1/page/%2? [NC,L,R] 
#--Rewrite "/search/foo/page/bar" to "/search.php?search=foo&page=bar"--# 
RewriteRule ^search/([^/]+)/page/([^/]+)/?$ /search.php?search=$1&page=$2 [NC,L,QSA] 
+1

那麼工作非常感謝:D – luckr