我正在为我的客户开发一个 CMS/框架,并且刚刚实现了一个 PHP 脚本,该脚本检测当前加载的“应用程序”是否需要 HTTPS,如果需要,则重定向到 HTTPS 等效项。
同时,我还使用 mod_rewrite 来实现友好的 URL,效果很好。但是,当脚本转到 HTTPS 时,mod_rewrite 似乎不再起作用,我收到标准的 Apache“访问被禁止”消息。
这是在 localhost 开发服务器上(使用 XAMPP),没有安装 SSL 证书(实际服务器上会有)。需要说明的是,我并没有尝试通过 mod_rewrite 强制使用 HTTPS(90% 的搜索结果似乎都是这样),只是想让我的友好 URL 能够正常工作。
编辑:访问“根”地址时也会发生这种情况(https://localhost/cms/) 它将默认为索引页。
这是我的.htaccess:
# Protect files.
<FilesMatch "(\.(xml|html|cache))$">
Order allow,deny
</FilesMatch>
# Disable directory listings.
Options -Indexes
# Follow symbolic links.
Options +FollowSymLinks
# Error document.
ErrorDocument 404 /index.php
# Rewrite URLs.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
</IfModule>
任何帮助都将不胜感激。谢谢 :)
答案1
问题似乎在于 Apache/XAMPP 上的 SSL 有第二个单独的 DocumentRoot 配置。通过将“httpd-ssl.conf”中的 DocumentRoot 值设置为与我的“httpd.conf”文件中的值相同,解决了此问题。现在一切正常!