.htaccess - .htaccess 重写以将所有根 URL 重定向到一个新的子目录,除了一个特定的子目录
问题描述
我的 WP 网站有两种语言。默认语言 (EN) 曾经是默认语言,并且是子目录中的第二语言 (NL)。现在默认语言的所有页面和目录也已移动到一个子目录,根 url 只显示一个 splah 页面,您必须在其中选择您的语言。
所以所有的东西都root.com/...
应该用 301 重定向规则重定向到root.com/en/...
除了root.com/nl/...
应该留在里面的所有东西root.com/nl/...
并且 除了带有剩余语言选择的启动页面root.com
我应该如何在 htaccess 文件中编写重定向规则?
解决方案
这实际上应该很简单。
我们使用 RewriteCond 来检查请求的 URL 路径是否不是以/nl/
. 将^
模式锚定在测试字符串的开头,并!
否定它。
在 RewriteRule 模式中,我们要求路径至少包含一个字符。此时前导/
已被剥离(仅当在 .htaccess 中配置重写时,如果它是通过中央服务器配置完成的,那将是不同的) - 这意味着,在根目录中请求启动屏幕URL 在这里将是一个“空”路径。通过将模式锚定在开头和结尾,并使用+
量词,我们要求路径必须至少包含一个字符,因此如果请求根路径,则此规则将什么也不做。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/nl/
RewriteRule ^(.+)$ /en/$1 [R=302,L]
推荐阅读
- android - 如何在 Kotlin 中让多个 TextView 每次都显示已编辑的 SharedPreference 的值
- python - scatter3D() 函数 ValueError:形状不匹配:无法将对象广播到单个形状
- sql - 在 sybase ASA11 中显示最近 1 小时的记录数据
- python - 来自具有不同长度的列表列表的 NumPy 数组(填充)
- node.js - 如何从nodejs中的redis slave读取数据
- java - AWS DynamoDb 使用 DynamoDbEnhancedClient 读取 BatchRead
- python-3.x - ImageMagick和Wand之间连接组件的输出不同?
- c++ - 在没有枚举和开关的多个向量之一上调用函数
- node.js - 如何从 Mongo 文档中仅检索 N 个子文档
- azure - 如何使用 Ansible 从 .vhd 文件创建 Azure 映像