Я хочу, чтобы mod_rewrite сделал это:
http://server/*
-> перенаправить на http://server/app/*
http://server/app/*
не следует перенаправлять.
http://server.domain/*
-> перенаправить на http://server/app/*
http://server.domain/app*
-> перенаправить на http://server/app/*
Он должен работать с mod_jk!
Изменить: это окончательное решение
# 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! Я не решаюсь отмечать кого-либо из вас как «правильного», поскольку оба внесли ценный вклад, который составил окончательное решение.
Используйте следующие директивы конфигурации (возможно, вы захотите добавить их в свой .htaccess
файл):
RewriteEngine on
RewriteCond %{request_uri} !^/prepended
RewriteRule ^(.+?)$ prepended/$1
Это должно работать лучше
RewriteEngine On
RewriteCond %{HTTP_HOST} !^server$ [NC]
RewriteRule ^(.*)$ http://server/$1
RewriteRule ^$ /app
Это не в моей голове, но что должно быть происходит. Запрос приходит, если он не использует сервер для имени хоста, тогда он будет перенаправлен на http: // сервер оставив остальную часть поля URI нетронутой. Затем он повторно обработает правила, пропустив первое (поскольку RewriteCond имеет значение false), а затем обработает RewriteRule. Это означает, что если URI пуст, отправьте его в / app. Если URI не пустой, он будет использовать то, что уже есть.
Так что помимо того, что у вас уже есть, он также должен работать как
http://server/foo -> http://server/foo
http://server.domain/foo -> http://server/foo
Дайте мне знать, как это работает, в моей голове, кажется, все работает нормально :)