在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] 删除。
我来说两句