Mod rewrite mod_重写条件和规则(混乱)请帮助

Mod rewrite mod_重写条件和规则(混乱)请帮助,mod-rewrite,url-rewriting,Mod Rewrite,Url Rewriting,请帮忙 经过无数个小时的寻找我的问题的解决方案,我已经变得完全困惑,所以我的答案是,如果这是以前的答案 我有一个当前URL,如下所示: 我正在清理我的url,因此我现在创建了一个重写规则,将以下内容解析为上一个url: 我在.htaccess文件中为此使用的规则如下: RewriteRule ^dental_news/([^/]*)/([^/]*)$ /news/dentistry_dental/article_detail.php?article=$1&title=$2 [L]

请帮忙

经过无数个小时的寻找我的问题的解决方案,我已经变得完全困惑,所以我的答案是,如果这是以前的答案

我有一个当前URL,如下所示:

我正在清理我的url,因此我现在创建了一个重写规则,将以下内容解析为上一个url:

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

RewriteRule ^dental_news/([^/]*)/([^/]*)$ /news/dentistry_dental/article_detail.php?article=$1&title=$2 [L]
然而,这正如期发挥作用。。我还需要有一个旧的url(在许多搜索引擎上都有索引),现在用301重定向指向新的url

RewriteCond %{REQUEST_URI} !^\/dental_news\/
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=(.*)$
RewriteRule (.*) /dental_news/%1/%2? [L,R=301]
我尝试了很多东西,但到目前为止,我只得到了错误,我想这是一个循环错误

有没有人知道我如何在不循环的情况下实现双向重定向

任何帮助都将不胜感激

编辑

上面的问题已经解决了,你可以从下面的答案中看到,但是我现在有另一个问题,这应该有助于我理解发生了什么,我希望:)

我还有另一个URL
www.mydomain.com/news/dentistry\u dental/index.php
,我想用301重定向到
www.mydomain.com/dential\u news/

我已经试着从下面的答案中重写代码来做这件事,但是失败了,我仍然对我想的整个事情缺乏理解

任何帮助都很好:)

问候
M

尝试以下方法。第一个条件应该保护您不受重定向循环的影响(它只匹配不以
/dental\u news
开头的请求。
%1
%2
将匹配上一个
重写cond
中相应的正则表达式组。
重写规则
上的尾部
将在重定向时删除查询字符串。)

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

编辑: 我更改了第二个
RewriteCond
的最后一组,以匹配到
$fr=1
$
,如果这是
&1
,您可以将
RewriteCond
的结尾改为group
([^&]*)

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]

@clmarquart非常感谢您的帮助,从根本上说,这是一件好事,但是我如何将它与我的另一条规则结合使用,这条规则的作用正好相反?好像我将它添加到我的.htaccess中,仍然有某种循环在进行中。如果删除我的规则,重定向会起作用,但是它是404,因为我删除了我的规则。我跳了e这是有道理的:)再次为您的帮助干杯关于您原始的
重写规则
,重写上的最后一个参数应该是
$fr
还是
&fr
?在任何情况下,我第一次都没有注意到,我会更新我的原始答案来解决这个问题。$fr根本不应该在那里,并且已经被删除了,这是我试图删除的使用php进行重定向(由于标题问题而不可能),因此$fr=1应该从我的原始帖子中删除,现在我将这样做:)@clmarquart,仍然是同一个问题,我从字符串中删除了$fr,并使用了您提供的原始代码,但其循环:/。这个重写的东西很难:(好吧,我不确定我过去是不是这样做的,但我已经再次更新了答案……希望它对你有用。