我需要重写URL
http://www.domain.com/blog/wp-content/uploads/this-is-a-static-file.jpg
至
http://www.domain.com/wp-content/uploads/this-is-a-static-file.jpg
我正在使用这个规则:
location /blog/wp-content$ { rewrite ^/blog/wp-content/(.*)$ /wp-content$1 last; }
奇怪的是,只有直接在wp-content之后而没有静态文件的URL被正确地重写:
http://www.domain.com/blog/wp-content/uploads/ => http://www.migayopruebas.com/wp-content/uploads/
但是,它有多个子级别或涉及静态文件,它不起作用:
http://www.domain.com/blog/wp-content/uploads/migayo-trangulacion-laton.jpg => doesn't change
http://www.domain.com/blog/wp-content/migayo-trangulacion-laton.jpg =>不会改变
任何人都可以指出我正确的方式来做到这一点? 我已经阅读了Nginx的文档和几个例子,仍然无法使其工作。
非常感谢,问候。
您的解决scheme不起作用,因为您没有正则expression式location ( ~字符丢失),并且使用$ ,这是一个正则expression式字符结束位置。
你可以用更简单的方法来做:
location ~ /blog/wp-content/(?<filename>.+)$ { rewrite ^ /wp-content/$filename last; }
所以,在这里你在location指令中执行正则expression式捕获,并使用rewrite目的地的捕获部分path。
如果你想使客户端301redirect,请使用以下命令:
location ~ /blog/wp-content/(?<filename>.+)$ { rewrite ^ http://www.domain.com/wp-content/$filename permanent; }
(我发表了一个答案,因为需要评论50个声望)
为什么“$”?
你可能想要这个:
location /blog/wp-content/ { rewrite ^/blog/wp-content/(.*)$ /wp-content$1 last; }