首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从目录中重定向(htaccess)所有URL?

如何从目录中重定向(htaccess)所有URL?
EN

Stack Overflow用户
提问于 2021-05-19 02:58:14
回答 1查看 58关注 0票数 0

我有目前的情况

代码语言:javascript
复制
Redirect 301 /linux-distros/link-a/ https://www.example.com/
Redirect 301 /linux-distros/link-b/ https://www.example.com/
Redirect 301 /linux-distros/link-c/ https://www.example.com/

但是更好的方法是对目录中的所有URL执行通配符吗?

我在想什么东西会起作用,但奇怪的是,它不.

知道为什么吗?

代码语言:javascript
复制
RewriteRule ^linux-distros/(.*)$ /$1 [R=301,NC,L]

事实上!

我把这个搞定了,应该没事的,对吧?

我的意思是,一切都很好,但是为了好的秩序,这样做有什么问题吗?

代码语言:javascript
复制
RedirectMatch 301 ^/linux-distros/ https://www.example.com/
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 04:35:27

让我们在这里理解这两种规则之间的区别:

第一类型:使用RewriteRule规则时的,如下所示:

代码语言:javascript
复制
RewriteEngine ON
RewriteRule ^linux-distros/(.*)$ /$1 [R=301,NC,L]

现在,当我在我的本地主机上使用curl命令(您也可以在浏览器中检查这个命令,我是在Linux终端上检查它)时,我在输出中得到如下结果:

代码语言:javascript
复制
curl -IL "http://localhost:80/linux-distros/link-a/"
HTTP/1.1 301 Moved Permanently
Location: http://localhost/link-a/

我们可以清楚地看到它将URL接收到localhost/link-a,因为您要将$1传递给它,这是对规则左侧匹配正则表达式部分的反向引用。我相信你不想要它。

2类型:现在让我们使用RedirectMatch 301 ^/linux-distros/(.*)$ https://www.example.com/并在curl命令中尝试相同的URL(http://localhost:80/linux-distros/link-a):

代码语言:javascript
复制
curl -IL "http://localhost:80/linux-distros/link-a/"
HTTP/1.1 301 Moved Permanently
Location: https://localhost/

我们可以清楚地看到,它只会指向没有链接的本地主机,这正是您所要寻找的值,所以使用RedirectMatch的IMHO将更适合这里。或者,如果您想使用RewriteRule,那么您可以使用以下内容:

代码语言:javascript
复制
RewriteEngine ON
RewriteRule ^linux-distros/.*$ http://%{HTTP_HOST} [R=301,NC,L]

注意:我也希望这些规则重定向到站点的基本URI/,因此您已经处理了前端控制器端(我的意思是如何从后端等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67596312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档