我想要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
让我知道这是如何工作,在我的脑袋,似乎工作正常:)