无论如何使用ModRewrite来实现以下目的:
初始网址:http://example.com/page?value=test
Rewirted URL:http://example.com/page/value/test
OR
初始网址:http://example.com/page?value=test&fruit=apple
Rewirted URL:http://example.com/page/value/test?fruit=apple
我需要这个规则是动态的,因为我不知道它将用于所有页面,我还需要在PHP中保留$ _GET变量。
由于
答案 0 :(得分:2)
如果相关的URL存储在数据库中,并且需要重写,直到可以更新内容以反映新的URL模式,这个问题才有意义。其中,为了澄清问题,将被视为重定向不重写,从而改善SEO。然后,正如上面的评论指出的那样,URL可以重写以向PHP提供正确的URL参数。如果这是詹姆斯的意图,下面的配置将有所帮助:
### 301 redirect old query string URLs to pretty URLs
### This will help search engines index the new URLs,
### not ones that are linked in content
### This is rather messy due to the
### http://example.com/page/value/test?fruit=apple example
RewriteCond %{QUERY_STRING} value=([^&]*)
RewriteRule (.*) /page/value/%1 [R=301,E=rewrite:true]
RewriteCond %{ENV:rewrite} true
RewriteCond %{QUERY_STRING} !&
RewriteRule (.*) $1? [R=301,L]
RewriteCond %{ENV:rewrite} true
RewriteCond %{QUERY_STRING} &([^=]*)=(.*)$
RewriteRule (.*) $1?%1=%2 [R=301,L]
### Rewrite pretty urls with usable parameters
### [QSA] will maintain extra params such as &fruit=apple
RewriteRule /page/value/(.*) /page.php?value=$1 [QSA]
这很麻烦,但是我遇到了类似的情况,在重新定位存储在数据库中的旧URL是必要的,直到内容可以更新。
希望这有帮助。