首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将301 htaccess重定向到特定域

问将301 htaccess重定向到特定域
EN

Stack Overflow用户
提问于 2020-03-18 10:59:37
回答 1查看 90关注 0票数 0

我尝试了几件事情,我的重定向,但没有有效的解决方案。

我有两个域名指向同一文件夹/网站(多家商店前的商店),我想重定向一些网页从第一个领域在一个特定的网页和保持域名。

我的工作:

代码语言:javascript
复制
Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain1.local$ [NC]
RewriteRule ^/fr/blog/inspirations-c4$ https://domain1.local/fr/journal [R=301,L]
RewriteRule ^/fr/blog/inspirations-c3$ https://domain1.local/fr/journal [R=301,L]

RewriteCond %{HTTP_HOST} ^domain2.local$ [NC]
RewriteRule ^/fr/blog/inspirations-c4$ https://domain2.local/fr/test [R=301,L]
RewriteRule ^/fr/blog/inspirations-c3$ https://domain2.local/fr/test [R=301,L]

但是我不能用简单的重定向301来实现这一点,因为我不能从请求URI中指定域。因为目标页面根据域的不同而不同。

对不起,我的英语,并感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-18 12:34:43

除了@DusanBajic在他对您的问题的评论中解释的内容之外,您还需要考虑在重写规则时绝对和相对路径之间的区别。这实际上是明确记录的..。

在分布式配置文件(".htaccess")中实现的.htaccess规则模式与请求的URL的相对路径相匹配。然而,您尝试将其与绝对路径相匹配,而绝对路径永远不会匹配。因此,要么更改模式以使用相对路径,要么最好实现重写规则,使它们在这两种情况下都能工作。因此,当规则在真正的http服务器主机配置中实现时,模式与请求的URL中的绝对路径相匹配。这在一开始似乎令人困惑。但一旦你想一想,这是完全有意义的。

代码语言:javascript
复制
Options +FollowSymLinks -MultiViews

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain1\.local$ [NC]
RewriteRule ^/?fr/blog/inspirations-c4$ https://domain1.local/fr/journal [R=301,L]
RewriteCond %{HTTP_HOST} ^domain1\.local$ [NC]
RewriteRule ^/?fr/blog/inspirations-c3$ https://domain1.local/fr/journal [R=301,L]

RewriteCond %{HTTP_HOST} ^domain2\.local$ [NC]
RewriteRule ^/?fr/blog/inspirations-c4$ https://domain2.local/fr/test [R=301,L]
RewriteCond %{HTTP_HOST} ^domain2\.local$ [NC]
RewriteRule ^/?fr/blog/inspirations-c3$ https://domain2.local/fr/test [R=301,L]

这是一个好主意,从302临时重定向,并只改变到301永久重定向后,一旦你确定一切是正确的设置。这样可以防止在尝试时出现缓存问题。

此实现将在http服务器主机配置或分布式配置文件(".htaccess“文件)中同样工作。显然,重写模块需要加载在http服务器中,并在http主机中启用。如果使用分布式配置文件,则需要注意主机配置中完全启用了它的解释,并且它位于主机的DOCUMENT_ROOT文件夹中。

请注意:与使用分布式配置文件(".htaccess")相比,您应该始终倾向于将此类规则放置在http服务器主机配置中。这些分布式配置文件增加了复杂性,常常是意外行为的一个原因,很难调试,而且它们确实减慢了http服务器的运行速度。它们仅作为最后一种选择,用于您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供者)或坚持编写自己的规则的应用程序(这显然是一场安全噩梦)。

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

https://stackoverflow.com/questions/60738103

复制
相关文章

相似问题

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