2012-03-21 124 views
3

我想重定向任何具有/ test的URL路径为https://localhost/test。而且,如果一个URL是/测试?用户= 123它必须被重定向到https://localhost/test?user=123或者说如果URL /测试/ TEST_DB /用户?ID = 123 & PWD = 123具有被重定向到https://localhost/test/user/test_db/user?id=123&pwd=123设置Apache重定向从http到https为特定的url

所有其他任何类型的请求必须重定向到根文件夹(http://localhost/accessdenied.html)中的“访问被拒绝”的html页面。

如何在apache中通过RedirectMatch实现此目的。我试过类似

RedirectMatch permanent ^test/(.*)$ https://localhost/test/$1 

哪一个没有工作。

回答

1

我不知道这是否是一个更好的ServerFault问题。

总之:
我不知道你怎么可以用RedirectMatch做到这一点,但我知道你怎么可以用ModRewrite做到这一点:

RewriteEngine On$ 
RewriteCond %{HTTPS} off$ 
RewriteRule ^/bla https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]$ 

这是一个非常通用的形式会工作对于任何HTTP主机(因为我不知道关于主机的任何细节),并且将在URL的开始处重定向与bla相匹配的任何内容,并且不是已经具有参数和所有内容的Https。

+0

这并获得成功对我来说,它回答了这个问题。我认为这应该被@Abhishek所接受,即使它已经过了一年多了。 – ahpoblete 2013-05-02 19:55:12

0

这只是正常的我,我的Apache httpd的2.2服务器上:

RedirectMatch 301 ^(/someprefix[^/]*/.*)$ https://hostname$1