.htaccess - 将根域重定向到子文件夹
问题描述
这是我们当前的 .htaccess 文件,其中包含我们需要保留的规则,但我们还需要添加一个从根域重定向到子文件夹 URL 的新规则
example.com -> example.com/fl/en.html
。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.nz$
RewriteCond %{REQUEST_URI} !^/subfolder [NC]
RewriteRule ^(.*)$ /subfolder/$1 [L]
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(/home.html|/info.html|/flash|/external)
RewriteRule (.*) http://example.com/fl/en.html [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
解决方案
只要您将指令放在正确的位置,似乎没有什么特别的要求。要将文档根 (for example.com
) 重定向到/fl/en.html
in.htaccess
可以这样做:
RewriteRule ^$ /fl/en.html [R,L]
这只需要在为主机重写所有内容的指令之后domain.co.nz
以及在您的前端控制器之前进行。(您可以将其与您现有的重定向 , 等指令结合起来/home.html
。/info.html
)
您现有的规则可以进一步优化。与其在RewriteCond
指令中检查请求的 URL 路径并允许在模式中的所有内容通过,不如先在模式RewriteRule
中做你能做的事情更有效(因为这是首先处理的内容)。RewriteRule
此外,由于您使用的是 WordPress,因此您添加的任何自定义指令都.htaccess
应该在该# BEGIN WordPress
部分之外。WordPress 本身维护此部分,因此您所做的任何手动自定义都可能在更新期间被覆盖。
此外,无需重复该RewriteEngine
指令。(该指令的最后一个实例胜出并控制整个文件。)
所以,把所有这些放在一起,我们有类似的东西:
# Rewrite all requests for domain.co.nz to subfolder
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.nz$
RewriteRule !^subfolder /subfolder%{REQUEST_URI} [L]
# Redirect document root to /fl/en.html
RewriteRule ^$ /fl/en.html [R,L]
# Redirect specific paths to /fl/en.html
RewriteRule ^(/home.html|/info.html|/flash|/external) /fl/en.html [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
请注意,上述指令(带有单个R
)是临时(302)重定向。将其更改为R=301
是否打算永久保存,但只有在您测试它工作正常(以避免缓存问题)之后。
与往常一样,请确保您在测试前已清除浏览器缓存。
推荐阅读
- snowflake-cloud-data-platform - 无法理解雪花加密结果
- sql - 从列中选择不同的实例子字符串
- linux - 在多线程应用程序中同步线程
- javascript - 单选输入选择不会在表单重置回调中立即重置
- linux - 在 Linux 启动时设置环境变量
- sql - 如何使用包含 & 和 ® 的字符串更新列
- sql - 具有一个时间列的最近期间
- python - 解析嵌套的 JSON 文件,取出特定属性并从中创建 .txt 文件
- c# - 发布 Blazor 应用程序后,我收到错误“无效的对象名称”
- javascript - 当我将这个组件导入另一个组件时,如何使用 className 修改按钮组件