编辑或创建 .htaccess 文件以将文件夹重定向到页面

问题描述 投票:0回答:1

我的文件夹

.htaccess
中有一个
public_html
文件,所以我的目录如下所示:

public_html
    = cgi-bin/
    = images/
    = other/
    - index.html
    - .htaccess

.htaccess
文件将
www.example.com
重新路由到
example.com
。我从网上复制了以下代码,到目前为止它可以工作:

# Remove www from any URLs that have them:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

现在,如果有人访问

www.example.com/other
example.com/other
example.com/other/
,则会出现禁止页面错误。我想将这些请求重新路由至:

  • example.com/other/sub/index.html

如何扩展现有的

.htaccess
文件(或在子文件夹中创建新文件)来实现这一目标? (注意不需要屏蔽浏览器栏中的任何地址)

感谢任何解决方案和简短的解释...

.htaccess
1个回答
0
投票

您为该特定路径添加特定的重定向规则

/other
:

RewriteEngine on
# remove www from any request host name
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
# redirect any requests to /other
RewriteRule ^/?other/?$ /other/sub/index.html [R=301,L]

该规则将应用于路径

/other
/other/
的所有请求并重定向这些请求。这就是我从问题中了解到的。它不会干扰对该路径下任何内容的任何请求,因此例如
/other/foo
,您没有提到任何此类事情。

我还冒昧地简化了您现有的规则,删除了“www”。主机名的前缀。

这两个规则都可以在站点的

DocumentRoot
文件夹内的单个分布式配置文件中实现。一般来说,您应该更喜欢在中央虚拟主机配置中实现规则,这样复杂度更低且更高效,但为此您需要访问 http 服务器的中央配置。所以你需要控制该服务器。如果您使用的是简单的网络空间提供商,您将无法做到这一点。不过,上述规则的实现方式可以在两种设置中使用,无需任何修改。

© www.soinside.com 2019 - 2024. All rights reserved.