.htaccess 如何将www.example.com重定向subdomain.domain.com/*到domain.com/folder/*

hm2xizp9  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(128)

我必须对一个. htaccess文件进行重定向。
我想从子域URL访问文件夹的内容,如下所示:
subdomain.domain.com/* => domain.com/folder/*
该文件夹包含PDF文件,我想使用此URL访问它,例如:
subdomain.domain.com/file.pdf
我是htaccess重定向规则的新手,我有点迷路了。
我尝试了类似的方法,并在https://htaccess.madewithlove.com/中进行了测试

RewriteCond %{HTTP_HOST} ^subdomain.domain.com/*$
RewriteRule ^(.*) https://domain/folder/ [L,R=301]

这段代码可以在测试器上运行,但是在我的网站上却出现了错误:"连接已重置"。
你对此有什么想法吗?

    • 更新**

我听从了一些建议,但没有用

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/
RewriteRule (.+\.pdf)$ https://example.com/folder/$1 [R=302,L]
eanckbw9

eanckbw91#

RewriteCond %{HTTP_HOST} ^subdomain.domain.com/*$
RewriteRule ^(.*) https://domain/folder/ [L,R=301]

您没有对捕获的URL路径(即(.*))执行任何操作,因此将始终重定向到https://domain/folder/(无文件)。
我也会问这是否应该是一个301(永久)重定向。也许302(临时)重定向会更好在这里?注意301是缓存的,所以你需要在测试之前清除你的浏览器缓存。
应该是这样的:

RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com
RewriteRule (.*) https://domain/folder/$1 [R=302,L]

$1反向引用包含在RewriteRule * 模式 * 中捕获的URL路径。
Host头文件(即HTTP_HOST服务器变量的值)只包含 hostname,没有URL路径部分(幸运的是/*匹配斜杠0次或更多次,所以它在测试中仍然“工作”)。
但是,如果该文件夹只包含.pdf文件,则您应该限制更多,只重定向.pdf请求。例如:

:
RewriteRule (.+\.pdf)$ https://domain/folder/$1 [R=302,L]

相关问题