【问题标题】:.htaccess rewrite subfolders to remove /index.htaccess 重写子文件夹以删除 /index
【发布时间】:2017-11-03 11:48:56
【问题描述】:

我有一些重写友好 URL 的 htaccess 规则。除了一件事,一切都在工作。

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R] # <- for test, for prod use [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*?)/?$ $1.html [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

这是一个带有语言子文件夹的网站,例如:

/fr/about.html

/en/about.html

使用上面的 htaccess 规则,这些 url 如下所示:

/fr/about

/en/about

但这也意味着我的索引页面 URL 看起来像:

/fr/index

/en/index

我想要的是 /index 的 URL 看起来像

/fr

/en

这意味着他们尊重我上面 htaccess 的尾部斜杠部分,但从 URL 中删除 index

非常感谢任何帮助!

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    尝试添加(RewriteCond %{THE_REQUEST} ^...之前):

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*?)/index(\.html)?[\s?] [NC]
    RewriteRule ^ %1 [R=301,L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2020-09-06
      • 2012-12-12
      • 2023-03-09
      相关资源
      最近更新 更多