我想在一个新目录中重定向数百个网址,而不使用.html结尾。
旧网址:domain.com/content/lorem-ipsum.html
新网址:domain.com/new/lorem-ipsum
所以我需要一个重定向,将所有网址从/content/
重定向到/new/
和重定向,将所有网址从.html
重定向到不{{1} }。或者也许可以在一个重定向中完成,如
old:.html
new:domain.com/content/*.html
答案 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需要它来处理现在被重定向的请求。