301重定向到新目录,不使用.html

时间:2017-08-25 07:34:33

标签: .htaccess redirect mod-rewrite

我想在一个新目录中重定向数百个网址,而不使用.html结尾。

旧网址:domain.com/content/lorem-ipsum.html

新网址:domain.com/new/lorem-ipsum

所以我需要一个重定向,将所有网址从/content/重定向到/new/ 重定向,将所有网址从.html重定向到不{{1} }。或者也许可以在一个重定向中完成,如

old:.html

new:domain.com/content/*.html

2 个答案:

答案 0 :(得分:1)

您可以使用以下重定向:

RedirectMatch 301 ^/dir/(.+)\.html$ http://example.com/new/$1

答案 1 :(得分:1)

您应该查看RewriteRule documentation并阅读一些有关如何使用它的教程:

https://www.sitepoint.com/guide-url-rewriting/

http://www.elated.com/articles/mod-rewrite-tutorial-for-absolute-beginners/

https://code.tutsplus.com/tutorials/an-in-depth-guide-to-mod_rewrite-for-apache--net-6708

为了帮助您入门并解决当前问题,请尝试以下操作:

RewriteEnging On
RewriteRule ^content/(.+)\.html /new/$1 [R=301,L]

在这里演示:http://htaccess.mwl.be?share=c73ccb42-e5aa-5e1f-b672-5aac32913912

说明:在模式中,我们告诉服务器查找以内容开头的网址^content/,后跟一个或多个字符 - (.+)并以.html结尾 - \.html

请注意()周围的.+ - 这会指示Apache将匹配项保存到变量中$1。因此,在您的示例中,lorem-ipsum存储在$1

中 然后可以在替换中访问

$1,我们告诉它转到/new/,然后是$1中存储的内容。

最后在标记部分,我们指示Apache发布301重定向 - R=301并停止处理更多规则L,因为我们不会#39 ; t需要它来处理现在被重定向的请求。