使 .htaccess 重定向区分大小写

使 .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(注意是大写 A),我无法在代码中更改路径(对此感到抱歉)

问题 因此,我收到错误页面(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

答案1

出现这样的行为很奇怪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]

相关内容