如何使用htaccess从https隐藏公用文件夹?

时间:2017-08-17 15:33:18

标签: apache .htaccess mod-rewrite https zend-framework2

我需要使用HTTPs隐藏URL中的公共文件夹。

我的网站有两个输入选项:www.mysite.com和www.mysite.com.br(第一个地址重定向到第二个地址)。

我已经使用htaccess中的代码行进行了一些测试:

RewriteRule ^ public. * $ Https: //% {HTTP_HOST} / public / $ 1 [L, R = 301]

当我在浏览器中键入URL:www.mysite.com.br(这是官方地址)时它工作正常,因为它出现HTTPs,但是当我输入www.mysite.com时它不会作为HTTP输入,因为它是重定向。

如果我以这种方式输入htaccess:

RewriteCond% {HTTP_HOST}! ^ Www \. [NC]
RewriteRule ^ (. *) $ Https: //% {HTTP_HOST} / public / $ 1 [L, R = 301]

两个地址都正确输入(使用HTTPs),但" public"文件夹出现在前面:www.mysite.com.br/public /

我需要隐藏公用文件夹,因此键入两个地址我可以查看HTTP。

这是我的.htaccess代码:

<IfModule mod_rewrite.c>
 Options +FollowSymLinks -MultiViews
 RewriteEngine On
 RewriteBase /

 RewriteCond %{HTTP_HOST} !^www\. [NC] 
 RewriteRule ^(.*)$ https://%{HTTP_HOST}/public/$1 [L,R=301]
# RewriteRule ^public.*$ https://%{HTTP_HOST}/public/$1 [L,R=301]

 RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
 RewriteRule ^ %1 [L,NE,R=302]
 RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

 RewriteCond %{REQUEST_METHOD} !^POST$
 RewriteCond %{HTTP:X-Forwarded-Proto} =https [OR]
 RewriteCond %{HTTP:X-Forwarded-Proto} =""
 RewriteCond %{HTTPS} !=on

#Uncomment lines below when uploading to the live server
 RewriteCond %{HTTP_REFERER} !^$
 RewriteCond %{HTTP_REFERER} !^https://(www\.)%{HTTP_HOST}/.*$ [NC]

 RewriteRule \.(gif|jpg|png|tif|js|css|xls|xlsx|zip|rar|pdf|ods|ots)$ 
 public/index.php [NC,F,L]
</IfModule>

0 个答案:

没有答案