删除.htaccess中的尾部斜杠以供CloudFront使用

詹姆斯克里德兰

在StackOverflow上有很多正则表达式的“删除尾部斜杠”,它们都很可爱,但是它们都有相同的问题:它们不能与Amazon CloudFront等CDN服务一起使用。

因此,我的设置是www.example.com是Amazon Cloudfront,而我的真实网站是在real.example.com上。

下面的所有三个将愉快地从www.example.com/directory/删除结尾的斜杠,但会将URL重写为real.example.com/directory,这显然是我所不希望的。

我用过

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ %{REQUEST_URI} [R=301,L]

或者

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

或者

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

...但是所有这些都会公开“真实”域名。

如何编写正则表达式重写规则,该规则将正确删除尾部斜杠但不将域重写到原始网站?

(我不介意在此处对域URL进行硬编码,但是我需要保持http或https位不变。)

帕特里克·詹瑟

你尝试过这样的事情吗?

# Set "protossl" to "s" if we were accessed via https://. This is used later
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ http%{ENV:protossl}://www.example.com/$1 [R=301,L]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章