Назад | Перейти на главную страницу

apache mod_rewrite

Я хочу, чтобы mod_rewrite сделал это:

Он должен работать с 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

Дайте мне знать, как это работает, в моей голове, кажется, все работает нормально :)