2011-02-27 77 views
1

我有这个问题,我把CMS从旧的切换到新的,所以我试图正确地重定向的URL。试图让mod_rewrite工作

这里有一些例子网址,我想转换:

#-1) http://www.mysite.com/?dispatch=search_data&features=hash_tag 
#-2) http://www.mysite.com/index.php?dispatch=search_data&features=hash_tag 

基本上两者是除了第一个相同没有的index.php在URL中。

我得到了下面的代码,以部分工作:

RewriteCond %{QUERY_STRING} dispatch=(.*) 
RewriteRule ^$ http://www.mysite.com/? [L,R=301] 

上面的代码适用于#-1(当没有的index.php),但是当存在的index.php这是行不通的。

任何帮助/指导,非常感谢。

感谢

__ _ __ _ __ _ ___UPDATE_ __ _ __ _ __ _ __ _ __

根据要求,这里是目标URL应该是什么样的: http://www.mysite.com/

回答

2

你是什么意思呢“作品”?

你应该发布一个你想让新url看起来像给定旧url的例子。

但在任何情况下,你的问题的一部分是,RewriteRule线特别排除index.php和网站上的任何其他网页。

基本上你写什么tranlates这样:

if the query string contains "dispatch=...": 
    redirect requests FOR THE HOME PAGE ONLY (^$) to http://www.mysite.com/ 
+0

我已更新原始帖子,指出目标网址应该是什么。我也不理解为什么目标网址很重要。我希望'dispatch'和'index.php?dispatch'被转发到'http:// www.mysite.com' – Adil 2011-02-27 04:37:05

+1

我在说'^ $'只匹配基础url('/')后面没有任何东西。试试'^(index \ .php)?$'代替。 – tangentstorm 2011-02-27 04:39:54

+0

嘿!这就说得通了。非常感谢你! – Adil 2011-02-27 05:18:33

0

你尝试过改变第二部分包括“的index.php”的一部分?

RewriteRule ^$ http://www.mysite.com/index.php? [L,R=301] 
+0

我不认为这是正确的。重定向不是这里的问题。问题是重写条件不起作用。 – Adil 2011-02-27 04:17:44

1
RewriteCond %{QUERY_STRING} dispatch=(.*) 
RewriteRule ^(index.php)?$ http://www.mysite.com/? [L,R=301] 
+0

谢谢。我使用了tangentstorm的代码,但是你的代码是一样的。 – Adil 2011-02-27 05:20:37