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

сделать .htaccess перенаправление с учетом регистра

Мне нужно перенаправить в папки с порта 80 на 8080 1. Индекс по умолчанию в / somename 2. / admin в / somename

Я попробовал .htaccess к

RewriteEngine on
Redirect / http://example.com:8080/somename
Redirect /admin http://example.com:8080/someAdmin

Но я использую JSP, поэтому имя папки, которое я использовал, - это someAdmin (обратите внимание на заглавные буквы). Мне невозможно изменить путь в моем коде (извините)

Проблема Поэтому из-за этого я получаю перенаправление страницы с ошибкой (CASE sEnSiTive) (автоматически преобразуется в маленький регистр в браузере)

Добавить Я буду рад, если .htaccess сможет замаскировать порт 8080 от пользователя через обратный прокси.

RewriteEngine on
RewriteCond  %{SERVER_PORT} !^8080$
RewriteRule ^(.*) http://%{SERVER_NAME}:8080/somefolder%{REQUEST_URI}
Redirect /admin http://%{SERVER_NAME}:8080/someAdmin

Это странно, что Redirect ведет себя вот так. У меня сейчас нет подходящего экземпляра Apache, чтобы убедиться, что mod_alias должен вести себя подобным образом, но если он не будет учитывать регистр в целевом местоположении, я полагаю, просто используйте mod_rewrite, поскольку вы все равно загружаете его:

RewriteBase /
RewriteRule ^$ http://example.com:8080/somename [R,L]
RewriteRule ^admin$ http://example.com:8080/someAdmin [R,L]

Для обратного прокси, похоже, вы хотите использовать прокси вместо перенаправления, а не в дополнение к нему?

Для того, что вам нужно, ProxyPass будет работать нормально, но с .htaccess не очень хорошо. Если у вас есть возможность, не настраивайте это в .htaccess, используйте ProxyPass вместо. Если вы этого не сделаете, то mod_rewrite поможет:

RewriteBase /
RewriteRule ^admin(.*)$ http://example.com:8080/someAdmin$1 [R,L]
RewriteRule ^(.*)$ http://example.com:8080/somename/$1 [R,L]