努力获得
https://example.com/es/[path]
直接前往
https://example.com/[path]
我尝试了多段代码,但没有任何效果。
我尝试过的:
RewriteEngine on
RewriteRule ^/es/$ /$1 [L,R=301]
上面的内容总是将我重定向到主页。 我做错了什么?
您当前的实施存在一些问题,这就是为什么我怀疑您发布的这条规则实际上是“重定向到主页”:
RewriteRule
内的匹配模式与所请求URL的relative路径相匹配。这是有记录的。由于前导斜杠,您的模式^/es/$
将永远不会匹配相对路径。
您在该模式中没有捕获任何内容,这就是为什么
$1
永远不会在目标定义中包含任何内容。
该模式仅匹配exact字符串
/es/
,而不是包含像/es/[path]
这样更长的内容,因为使用了$
将模式锚定到主题末尾。
尝试一下:
RewriteEngine on
RewriteRule ^/?es/(.*)$ /$1 [L,R=301]
您可以在 http 服务器虚拟主机设置的集中配置中实施此类规则。如果您无权访问该文件(例如,如果您使用廉价的托管提供商而不是自己操作 http 服务器),您可以使用 distributed 配置文件(通常称为“.htaccess”),尽管该文件附带一些缺点。您必须首先在 http 服务器的配置中启用此类文件的解释(请参阅
AllowOverride
指令的文档)。
我强烈建议您查看您正在尝试使用的工具的文档,这里是 apache http 服务器的重写模块。作为典型的开源软件,它具有卓越的品质,并且附带有用的示例:https://httpd.apache.org/docs/current/mod/mod_rewrite.html