Apache的mod_rewrite

我想要mod_rewrite来做到这一点:

  • http://server/* – >redirect到http://server/app/*
  • http://server/app/*不应该被redirect。

  • http://server.domain/* – >redirect到http://server/app/*

  • http://server.domain/app* – >redirect到http://server/app/*

它必须使用mod_jk!

编辑:这是最终的解决scheme

 # force use of host 'server' RewriteCond %{HTTP_HOST} !^server$ RewriteRule ^(.*)$ server$1 [R,NE,L] # prepend /app to URL if missing RewriteCond %{request_uri} !^/app.*? RewriteRule ^(.+?)$ app/$1 [R,NE,L] 

感谢你,fahadsadah和Insanity5902! 我很犹豫是否表示你们其中任何一位是“正确的”,因为两者都提供了宝贵的意见,从而构成了最终的解决scheme。

使用下面的configuration指令(你可能想把它们添加到你的.htaccess文件中):

 RewriteEngine on RewriteCond %{request_uri} !^/prepended RewriteRule ^(.+?)$ prepended/$1 

这应该会更好

 RewriteEngine On RewriteCond %{HTTP_HOST} !^server$ [NC] RewriteRule ^(.*)$ http://server/$1 RewriteRule ^$ /app 

这是我的头顶,但应该发生什么。 请求进来,如果它没有使用服务器的主机名,那么它将redirect到http://服务器,保持其余的URI字段不变。 然后它会重新处理规则,跳过第一个(因为RewriteCond为false),然后处理RewriteRule。 这是说,如果URI是空的发送到/应用程序。 如果URI是空的,那么它将使用已经存在的内容。

所以,除了你已经有的东西之外,它也应该可以工作

 http://server/foo -> http://server/foo http://server.domain/foo -> http://server/foo 

让我知道这是如何工作,在我的脑袋,似乎工作正常:)