重定向子目录中的所有内容,但不重定向子目录本身
Posted
技术标签:
【中文标题】重定向子目录中的所有内容,但不重定向子目录本身【英文标题】:Redirect everything inside subdirectory but not subdirectory itself 【发布时间】:2022-01-22 01:18:02 【问题描述】:我有一个多语种 wordpress 网站,该网站上线并取代了旧网站。
并非所有语言都已翻译,因此我希望将旧网站与其他语言的 wordpress 一起保留。
example.de
-> 新的 wordpress 网站
example.de/zh-hans/*
-> 重定向到example.de/cn/
example.de/zh-hans/
-> 重定向到example.de/cn/
example.de/en/*
-> 重定向到 example.de/en/
example.de/en/
-> 继续example.de/en/
我的 .htaccess 目前看起来像这样:
Redirect 302 /zh-hans/ /cn/
RedirectMatch 302 ^/(zh-hans)/. /cn/
Redirect 302 /ja/ /jp/
RedirectMatch 302 ^/(ja)/. /jp/
RedirectMatch 302 ^/(en)/. /en/
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
en
、jp
和 cn
是其中包含 index.html 文件的实际文件夹。对于这些语言,WordPress 使用 en
、ja
和 zh-hans
。
我对此有一些问题:
-
只有
example.de/ja/
和 example.de/zh-hans/
可以正常工作
example.de/ja
(没有结束斜线)和所有其他类似的语言路径只是重定向到example.de/
example.de/en
、example.de/en/
最终进入重定向循环
斜线 (example.de/ja/some-path
) 之后和结尾的所有内容均由 wordpress 以 404 页打开
目前我不知道如何处理这个问题,我已经尝试了几个小时的不同组合。
有没有办法通过 .htaccess 来处理这个问题?
【问题讨论】:
【参考方案1】:尝试用RewriteRules
替换您的Redirects
:
RewriteEngine on
RewriteRule ^zh-hans/?$ /cn/ [R,L]
RewriteRule ^(zh-hans)/. /cn/ [R,L]
RewriteRule ^ja/?$ /jp/ [R,L]
RewriteRule ^(ja)/. /jp/ [R,L]
RewriteRule ^en$ /en/ [L,R]
我还在某些特定模式中使尾部斜线可选。它现在应该可以工作了。
【讨论】:
以上是关于重定向子目录中的所有内容,但不重定向子目录本身的主要内容,如果未能解决你的问题,请参考以下文章
让 wordpress 重定向到不同的地方,或者根本不重定向
如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息
使用 .htaccess 重定向 404 而不重定向尾部斜杠