好的,所以我有一个我正在使用的Apache主机(共享主机),他们的根目录是.htaccess文件。
Options -Indexes SSLOptions +StrictRequire ErrorDocument 401 "<!DOCTYPE html><html lang='en'> ... " ErrorDocument 403 "<!DOCTYPE html><html lang='en'> ... " SSLRequireSSL
所以当用户尝试连接没有SSL,他们被提示与文件中列出的自定义403 HTML。 在将旧url保留在地址栏中的情况下,可以快速添加https 。
但是,对于错误页面的改进,希望从./error加载一个php文件,并在ErrorDocument的定义中使用该文件。 现在这是踢球者,如果只是直接指定文件…
ErrorDocument 403 /error/script.php
他们将得到另一个403或Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. 因为到该文件的连接不在SSL下。 为了解决这个问题,可以试试这个…
ErrorDocument 403 https://site.tld/error/script.php
但是,将客户端redirect到https://site.tld/error/script.php ,这是UNDESIRED,因为他们必须重新inputurl,因此无法将http更改为https 。
所以,我想我必须做下面的一个:
./error从SSL要求与一些.htaccess处理或 昨天我无法做这件事。 也许这两个选项都不可行,但是我坚持要做什么。
我如何指示.htaccess允许http连接在./error ,或其他一些修复,所以我仍然得到我的错误页面,但客户仍然保持原来的url?
好的,现在是我的修补程序。
我有一个文件夹结构如下:
/ (web root) | |- .htaccess |- index.php | |- error |- dir1 |- dir2 ~ |- dir(n - 1) `- dir(n)
在(网站根).htaccess我有以下几点:
Options -Indexes ErrorDocument 403 /error/script.php
并且在任何子目录的文件夹(EXCEPT FOR / error /)中:
SSLOptions +StrictRequire SSLRequireSSL
这使我可以加载没有SSL的错误页面,但仍然强制执行每隔一个文件夹。 漂亮吗? 不,我希望能够从根的.htaccess控制这个。 但这是我迄今为止唯一得到的工作。
如果您能find更好的解决scheme,请在此处发布您的工作。