Apache2 使用 https 重写条件

Apache2 rewrite condition with https

我有 2 个 .htacces 文件

  1. /usr/local/apache2/htdocs .htacess 文件
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteCond %{REQUEST_URI} !^/test2/
RewriteRule ^(.*)$ /test2/ [NC,QSA]
  1. /usr/local/apache2/htdocs/test2 .htacess 文件
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
RewriteRule !^(ui/|index.php|favicon.ico) - [F,L,NC]
#RewriteCond %{HTTPS} off
#RewriteCond %{REQUEST_URI} !^/admin
#RewriteRule .* https://%{HTTP_HOST}%/admin [L,R=301]
</IfModule>

应用会强制应用到url下面,同时隐藏index.php

http://www.example.com/admin 另外还有另一个 link 和 http://www.example.com/display

在httpd.conf中配置的默认目录是:

DocumentRoot "/usr/local/apache2/htdocs/test2"
<Directory "/usr/local/apache2/htdocs/test2"

但是,如果我尝试 运行 使用 https link https://www.example.com/admin

我会得到这个错误:

Forbidden
You don't have permission to access /admin/ on this server.

我已经尝试使用#commented 代码,但仍然有错误。请帮忙

这些问题已通过应用解决

  1. 我发现还有另一个文件 ssl.conf 有一个 DocumentRoot,通过在 ssl.conf
  2. 中添加相同的文档根来解决这个问题
DocumentRoot "/usr/local/apache2/htdocs/test2"
<Directory "/usr/local/apache2/htdocs/test2"

  1. 将文件 php.conf 更改为(# 是旧代码)
# Depreciated in Apache 2.2 
# Order allow,deny 
# Deny from all 
# Satisfy All 
# New in Apache 2.4 
<RequireAll> 
Require valid-user Require ip 127.0.0.1 
</RequireAll>