【问题标题】: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

enjpcn 是其中包含 index.html 文件的实际文件夹。对于这些语言,WordPress 使用 enjazh-hans

我对此有一些问题:

  1. 只有 example.de/ja/example.de/zh-hans/ 可以正常工作
  2. example.de/ja(没有结束斜线)和所有其他类似的语言路径只是重定向到example.de/
  3. example.de/enexample.de/en/ 最终进入重定向循环
  4. 斜线 (example.de/ja/some-path) 之后和结尾的所有内容均由 wordpress 以 404 页打开

目前我不知道如何处理这个问题,我已经尝试了几个小时的不同组合。

有没有办法通过 .htaccess 来处理这个问题?

【问题讨论】:

    标签: wordpress .htaccess redirect mod-rewrite


    【解决方案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]
    

    我还在某些特定模式中使尾部斜线可选。它现在应该可以工作了。

    【讨论】:

      猜你喜欢
      • 2013-12-07
      • 2012-12-30
      • 2016-02-16
      • 1970-01-01
      • 2013-10-30
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      相关资源
      最近更新 更多