重定向基于文件夹结构

时间:2018-04-10 05:11:11

标签: apache .htaccess redirect

我们有一个网站,其网址结构正在发生重大变化。由于页面很多,我试图找到一种方法,根据请求文件结构和缺少文件扩展名重定向。

网页主要是两个版本中的一个:

  • mydomain.com/some-page-title
  • mydomain.com/multiple/folder/levels/some-other-page

最终目标是:

  • mydomain.com/some-page-title.htm
  • mydomain.com/newfolder/some-other-page.htm

我知道我可以指定一个条件来指向第二个示例的特定重定向,就像在上面的代码块中一样。我可以为第一个例子做一个简单的重定向。但令人失望的是,两个重写都会影响具有多个/文件/文件夹结构的网址,我最终会有两个重定向,一个包含新文件夹,另一个包含原始文件夹。

select distinct t2.Product, t1.Key, coalesce(t3.count, 0) as count 
from table2 t2 cross join (select [Key] from table1) t1
left join table2 t3 
          on t3.Product = t2.Product and t1.[key] = t3.Category

是否有RewriteCond说不能包含特定的文件结构?感谢

1 个答案:

答案 0 :(得分:1)

您可以尝试这些不会互相影响的规则:

RewriteEngine On

RewriteRule (?:/|\.[a-z0-9]{3,4})$ - [L,NC]

RewriteRule ^multiple/folder/levels/(.+)$ /learn/$1.htm [R=301,NC,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/learn/ [NC]
RewriteRule ^(.+?)/?$ $1.htm [R=301,NE,L]

RewriteCond %{REQUEST_URI} !^/learn/ [NC]将阻止第一次重定向后执行第二次重定向规则。

确保清除浏览器缓存或使用新浏览器测试此更改。