我的文件夹
.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
文件(或在子文件夹中创建新文件)来实现这一目标? (注意不需要屏蔽浏览器栏中的任何地址)
感谢任何解决方案和简短的解释...
您为该特定路径添加特定的重定向规则
/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 服务器的中央配置。所以你需要控制该服务器。如果您使用的是简单的网络空间提供商,您将无法做到这一点。不过,上述规则的实现方式可以在两种设置中使用,无需任何修改。