首页 > 解决方案 > .htaccess 将根文件夹重写为子文件夹

问题描述

请问我可以帮助将 URL 重定向到子文件夹,以便将其中的所有https://example.com内容重写为https://example.co.uk/subfolder吗?

.htaccess文件需要在/subfolder.

标签: .htaccessredirecturl-rewriting

解决方案


您可以在根.htaccess文件中执行以下操作以将所有直接请求重写到子文件夹。

RewriteEngine On

# Rewrite all direct requests to the `/subfolder` directory
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^ subfolder%{REQUEST_URI} [L]

REDIRECT_STATUS环境变量的检查确保只有来自客户端的直接请求(与内部重写的请求相反)被重写到/subfolder目录(从而避免了重写循环)。

这也意味着对/subfolder自身的直接请求也将被重写到/subfolder目录(即。/subfolder/subfolder) - 因此,如果您愿意,您可以拥有一个同名的子文件夹(否则直接请求/subfolder将导致 404)。也就是说,除非您.htaccess在子文件夹中有一个附加文件也包含 mod_rewrite 指令,在这种情况下,这些指令将被覆盖。


更新:在您的问题更新之后,现在说明以下...

.htaccess文件需要在/subfolder.

在这种情况下,这是不可能的。.htaccess重写请求的文件/subfolder 必须在文档根目录(父目录)中。

如果该.htaccess文件在其/subfolder自身中,那么它将永远不会针对该子文件夹之外的请求进行处理以重写请求。


推荐阅读