2016-03-04 105 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