2011-04-12 91 views
0

请帮助,mod_rewrite的条件和规则(迷茫)的帮助,请

大量的时间寻找解决我的问题,我已经完全迷茫之后,所以我appologies如果像以前一样得到回答。

我有一个当前的URL像这样:

http://www.mydomain.com/news/dentistry_dental/article_detail.php?article=2968&title=redefining-oral-hygiene-intervention

我清理我的网址,以便现在已经创建了一个重写规则解析如下,以先前的网址:

http://www.mydomain.com/dental_news/2968/Redefining-oral-hygiene-intervention

我在.htaccess文件中使用的规则如下:

RewriteRule ^dental_news/([^/]*)/([^/]*)$ /news/dentistry_dental/article_detail.php?article=$1&title=$2 [L] 

这是按预期工作,但是..我需要也有老网址(这是在许多搜索引擎索引)现在指向新的网址与301重定向。

我已经尝试了很多事情,但至今我什么也没有得到,但我错误地认为它有一个循环错误。

有没有人有任何想法我怎么能实现2路重定向没有循环?

任何帮助,将不胜感激

编辑

上述问题已经解决,你可以通过下面的回答看,但是我现在有另一个查询,这应该帮助我理解怎么回事,我希望:)

我有另一个URL www.mydomain.com/news/dentistry_dental/index.php,我想用301 www.mydomain.com/dental_news/

我有三重定向编辑重写下面的答案代码做到这一点,但这是一个失败,我仍然缺乏对我认为的整个事情的理解。

任何帮助是巨大的:)

问候 中号

回答

0

尝试以下。第一个条件应该保护你从一个重定向循环(它只匹配的请求不/dental_news开始该%1%2将从以前RewriteCond匹配相应的正则表达式组。此外,在RewriteRule?,将删除重定向的查询字符串。

RewriteCond %{REQUEST_URI} !^\/dental_news\/ 
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=(.*)$ 
RewriteRule (.*) /dental_news/%1/%2? [L,R=301] 

希望这有助于

编辑: 我改变了第二RewriteCond最后一组搭配,直到的,如果这意图是&1,则可以改为将RewriteCond的末尾更改为组([^&]*)

RewriteCond %{REQUEST_URI} !^\/dental_news\/ 
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=([^$]*)$ 
RewriteRule (.*) /dental_news/%1/%2? [L,R=301] 

编辑

RewriteEngine On 

RewriteRule ^dental_news/([^/]*)/([^/]*)$ news/dentistry_dental/article_detail.php?article=$1&title=$2&redirect [L] 

RewriteCond %{REQUEST_URI} !^/dental_news/ 
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=([^&]*)$ 
RewriteRule (.*) /dental_news/%1/%2? [L,R=301] 
+0

@clmarquart非常感谢您的帮助,就deffinately回事好东西,但如何将我结合使用这个与我的其他规则,它确实另方式? 就好像我将它添加到我的.htaccess中,仍然存在某种循环。如果删除我的规则,重定向工作,但它是一个404,因为我已经删除了我的规则。 我希望这是有道理的:) 再次为你的帮助欢呼 – madmatuk 2011-04-12 15:23:04

+0

在你原来的'重写规则',重写的最后一个参数应该是'$ fr'或'&fr'?无论哪种情况,我都没有第一次注意到这一点,我会更新我的原始答案以解决问题。 – clmarquart 2011-04-12 15:55:28

+0

$ fr并不意味着在那里,并已被删除,这是我试图做重定向与PHP(不可能由于头问题)所以$ fr = 1应该从我的orignal职位删除哪些病现在:) – madmatuk 2011-04-12 15:56:51