2010-07-05 39 views

回答

0

基本重写:

RewriteEngine On 
RewriteRule http://www.site.com/?lang=(.+?)&type=(\d+?)&mode=(\d+?) http://www.site.com/$1/$2/$3 [L,R=permanent] 

编辑:更改重写标志来强制永久重定向

+0

这似乎工作:在此服务器上找不到请求的URL。 – werd 2010-07-05 19:56:37

+0

你有一个页面响应'site.com/lv/1/2'吗?你在使用某种框架吗? – 2010-07-05 20:57:00

1

假设你真的想重写/lv/1/2?lang=lv&type=1&mode=2(我看不出有什么理由做对面)并且没有其他重写是主动的,这应该是关键:

RewriteRule ^/([^/]*)/([^/]*)/([^/]*)$ ?lang=$1&type=$2&mode=$3 [L] 

另外;如果你想将它们包含在你的URI中,你最好用更有用的信息替换那些神奇的数字。

编辑:如果真的是你想要做的对面,一看便知由马特·S.

+0

是的,我反其道而行之:P谢谢! – werd 2010-07-05 20:00:49

0

您需要单独处理URI路径和查询。如果这些参数出现在非常相同的顺序,你可以这样做:

RewriteCond %{QUERY_STRING} ^lang=([^&]+)&type=([^&]+)&mode=([^&]+)$ 
RewriteRule ^$ /%1/%2/%3? [L,R=301] 

否则,你将需要把他们在正确的顺序使用这个规则之前,或采取每个参数在一个时间。

+0

这些都不是以任何方式工作,还有什么我需要改变在Apache配置或其他? – werd 2010-07-06 11:39:57

+0

@werd:你使用强制性的'RewriteEngine on'吗?你想在哪里使用该规则? – Gumbo 2010-07-06 12:14:43

+0

是的,我正在使用它,我正在使用它的网站索引。在根目录中,我有index.php和.htaccess文件。 – werd 2010-07-06 14:11:16