.htaccess重写子文件夹以删除/索引

时间:2017-11-03 11:48:57

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

我有一些htaccess规则可以重写友好的URL。一切都是分开的。

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规则,这些网址如下:

/fr/about

/en/about

但是这也意味着我的索引页面网址如下:

/fr/index

/en/index

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

/fr

/en

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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

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