.htaccess重定向和路径的逻辑

时间:2012-03-15 23:24:57

标签: .htaccess redirect alias mod-alias

我遇到了将一些旧网址重定向到新网址的问题

问题包括这些网址:

1) RedirectMatch permanent  THISWORD-THIS-WORD.html http://domain.com/somecategory/newurl-for-this-page.html

2) RedirectMatch permanent someurl-THISWORD-THIS-WORD.html http://domain.com    

3) RedirectMatch permanent anotherurl-THISWORD-THIS-WORD.html http://domain.com/new-anotherurl.html

问题是:

重定向第一个网址(1)会导致seond和第三个网址(2和3)重定向到1)重定向(即http://domain.com/somecategory/newurl-for-this-page.html

我想了解为什么第二和第三次遵循第一条指令?

临时解决方案是放弃第一次重定向。所以当一个cleint请求旧的url 1时,他们会得到404错误

有没有办法通过.htaccess来解决这个问题?

为什么会这样?

让3个网址以相同路径结束的逻辑是什么

oneword-THIS-PATH.html

twoword-THIS-PATH.html

thrreword-THIS-PATH.html

是从同一个.htaccess文件重定向的?

谢谢你

1 个答案:

答案 0 :(得分:0)

我不使用RedirectMatch。

试试这个

RewriteCond %{REQUEST_URI} ^.*/THISWORD-THIS-WORD.html
RewriteRule ^http://domain.com/somecategory/newurl-for-this-page.html [R=301,L]

RewriteCond %{REQUEST_URI} ^.*/someurl-THISWORD-THIS-WORD.html
RewriteRule ^http://domain.com [R=301,L]

RewriteCond %{REQUEST_URI} ^.*/anotherurl-THISWORD-THIS-WORD.html
RewriteRule ^http://domain.com/new-anotherurl.html [R=301,L]