请帮忙,
经过无数个小时寻找我的问题的解决方案后,我已经变得非常困惑,所以如果之前已经回答了这个问题,那么我的应用就是这样。
我有一个当前的网址:
我正在清理我的网址,所以现在创建了一个重写规则来将以下内容解析为上一个网址:
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]
这是按预期工作的,但是..我还需要OLD网址(在许多搜索引擎上编制索引),现在指向具有301重定向的新网址。
我尝试过很多东西,但是到目前为止,除了错误之外我什么都没得到,我认为它有一个循环错误。
有没有人知道如何在没有循环的情况下实现双向重定向?
非常感谢任何帮助
修改
上面的问题已经解决了,你可以通过下面的答案看到,但我现在有另一个问题,这应该有助于我理解我希望发生什么:)
我有另一个网址www.mydomain.com/news/dentistry_dental/index.php
,我想将其重定向到301 www.mydomain.com/dental_news/
我尝试从下面的答案中重写代码来做到这一点,但这是一个失败,我仍然缺乏对我认为的整个事情的理解。
任何帮助都很棒:)
此致 中号
答案 0 :(得分: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
的最后一组以匹配$
$fr=1
,如果这是&1
,您可以更改RewriteCond
的结尾{1}}代替([^&]*)
。
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]