我的网络应用程序中有当前的情况:
html文件将从let that say {currentpath} / images /
请求图像由于经常使用MVC我的网址更改:
domain.com/app/main/welcome/
(从主类获取欢迎方法)
在这种情况下,视图将从
请求图像domain.com/app/main/welcome/images/
在任何情况下,如果脚本从其图像子文件夹中调用某些东西,我都需要将其重定向到固定文件夹(比如domain.com/app/images /)。
到目前为止,我已经尝试过这个:
RewriteRule ^(.*)/app/(.*)/images/(.*)$ $1/app/images/$3 [R=301,L,QSA]
哪个不起作用。
我的意图是重定向:
domain.com/app/{anything}/images/
到
domain.com/app/images/{the requested image}
这是我在stackoverflow中的第一篇文章,通常我会通过搜索直接找到所有答案,但在此我不知道该怎么做。
顺便说一下,我知道我可以简单地用固定路径对我的所有视图执行replace_all,但是因为它可能在将来发生变化,这将是一种更优雅的方式。
答案 0 :(得分:0)
您可以尝试:
RewriteRule ^/?app/.+/images/(.*)$ /app/images/$1 [R=301,L,QSA]
您可能想要决定您希望网址永久保留的方式,只需将重定向更改为匹配,只需在后台更改其余部分即可。您可能也想考虑Alias:
...其中{currentpath}必须填写
Alias /app/{currentpath}/images /app/images
或AliasMatch
AliasMatch ^/app/.+/images(.*) /app/images$1
然后在文件夹更改时更改最后一部分,您也可以通过mod_alias永久重定向,尽管它有点不同:
Redirect 301 /app/{currentpath}/images http://domain.com/app/images
还有一个RedirectMatch。
答案 1 :(得分:0)
您需要的规则是:
RewriteRule ^(app/)[^/]+/(images/.*)$ $1$2 [R=301,L,NC]