2010-08-26 123 views
1

我想要得到一个mod_rewrite正常工作。mod_rewrite 301重定向:从旧到新的动态网址

下面是代码:

RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=301$ 
RewriteRule ^index\.php$   
/blog/shop/index.php?route=product/product&product_id=301? [R=301,L] 

它的工作原理,但在新的URL%3F的末尾增加。 有人可以帮我搞定它吗?

回答

0

将无逃生标志NE底:

RewriteRule ^index\.php$   
/blog/shop/index.php?route=product/product&product_id=301? [R=301,L,NE] 
+0

尝试与NE标志,但没有变化。 – proximity 2010-08-26 12:24:25

+0

为什么你需要URL中的问号? – 2010-08-26 12:29:53

0

%3F是在你的发言结束了问号。把它拿出来,你应该很好。

RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=301$ 
RewriteRule ^index\.php$   
/blog/shop/index.php?route=product/product&product_id=301 [R=301,L] 
+0

谢谢,但url最后仍有%3f: blog/shop/index.php?route = product/product&product_id = 301%3f – proximity 2010-08-26 12:22:03

+0

您的浏览器是否缓存响应?奇怪的是,没有*变化。要么Petr或我的回应应该是你的解决方案...... – bradenkeith 2010-08-26 12:29:34

0

%3f是“?”你有“目标网址”的末尾 - 只是网址转义。这真的应该在那里吗?

+0

马上接受,不会改变任何事情。 – proximity 2010-08-26 12:24:04

0

%3f?在替换结束时以百分号编码。刚落?末:

RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=301$ 
RewriteRule ^index\.php$ /blog/shop/index.php?route=product/product&product_id=301 [R=301,L] 

你只使用一个?末指示空查询,以便请求的查询不会被追加到新的URL,如果它不包含查询。

+0

谢谢,我拿了?离开 - 但网址仍然%3f最后: 博客/商店/ index.php?路线=产品/产品&product_id = 301%3f – proximity 2010-08-26 12:22:39

+1

可能旧的重定向缓存在您的浏览器。 – 2010-08-26 12:36:18