1

我的 Web 应用程序中存在当前情况:

html 文件将请求来自 {currentpath}/images/ 的图像

由于使用 MVC,我的 URL 经常更改:

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,但由于它将来可能会改变,这将是一种更优雅的方式。

4

2 回答 2

0

你可以试试:

RewriteRule ^/?app/.+/images/(.*)$ /app/images/$1 [R=301,L,QSA]

您可能想决定如何永久保留网址,只需更改重定向以匹配,然后在后台更改其余部分。您可能还想考虑别名:

...必须填写 {currentpath} 的地方

Alias /app/{currentpath}/images /app/images

或别名匹配

AliasMatch ^/app/.+/images(.*) /app/images$1

然后在文件夹更改时更改最后一部分,您也可以通过 mod_alias 永久重定向,尽管它有点不同:

Redirect 301 /app/{currentpath}/images http://domain.com/app/images

还有一个 RedirectMatch。

见:http ://httpd.apache.org/docs/2.0/mod/mod_alias.html

于 2012-04-27T20:56:25.583 回答
0

您需要的规则是:

RewriteRule ^(app/)[^/]+/(images/.*)$ $1$2 [R=301,L,NC]
于 2012-04-27T21:51:51.060 回答