如果url在中间包含https://,则Mod重写规则不起作用

时间:2017-10-24 21:32:58

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

我需要重写网址:

http://example.com/key/https://.pictureurl.jpg

http://pictureurl.jpg

然而,这个不起作用,我想知道为什么:

RewriteEngine On
RewriteBase /
RewriteRule ^key/https://(.*)$ $1 [R,L]

所以它应该最终被重定向到http://pictureurl.jpg 然而,它不是。它被重定向到:

http://www.https.com/pictureurl.jpg

这是一个无效的网址。为什么这样以及如何解决它。感谢。

2 个答案:

答案 0 :(得分:0)

尝试此重写规则

RewriteEngine On
RewriteBase /
RewriteRule ^key/https://\.(.*)$ //$1 [R,L]

我测试了它here,它似乎有效。

enter image description here

答案 1 :(得分:0)

问题是 mod_rewriteRewriteRule模式中将多个斜杠删除为单斜杠

您可以使用RewriteCond匹配您的URI中的https://,如此规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/key/https://(.+)$ [NC]
RewriteRule ^ /%1 [L,NE,R=301]

确保在测试时清除浏览器缓存。