如何将固定文件夹名称重定向到另一个固定文件夹,无论它在何处被请求

时间:2012-04-26 22:34:05

标签: apache mod-rewrite redirect url-rewriting

我的网络应用程序中有当前的情况:

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,但是因为它可能在将来发生变化,这将是一种更优雅的方式。

2 个答案:

答案 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。

请参阅:http://httpd.apache.org/docs/2.0/mod/mod_alias.html

答案 1 :(得分:0)

您需要的规则是:

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