如何将Apache 403错误用作Htacess的路由技术

我有一个具有此目录结构的简单php Web应用程序


.

├── custom_403.html

├── custom_404.html

├── home

│   └── home.php

├── .htaccess

├── index.php

├── login

│   └── login.php

├── public

│   ├── bootstrap

│   ├── css

│   ├── error_pages

│   ├── fontawesome

│   ├── .htaccess

│   └── js

├── signup

│   └── signup.php

├── test.php

我制作了一个.htacess基本上像这样的文件


ErrorDocument 404 /public/error_pages/404.php

ErrorDocument 500 /public/error_pages/500.php

ErrorDocument 403 /index.php

当我输入类似的内容时http://localhost/login/,应该会给我一个403 Forbidden错误,因为目录login存在但没有文件index.php。根据我.htacess的index.php看法,它应该提供默认index.php文件。我利用上的优势使用jquery从地址栏的指定路径加载文件。我搜索window.location.pathname从该路径加载具有resolveUrl()功能的相应文件。

这意味着,如果刷新页面,http://localhost/login/将加载带有类似jquery的路径的页面login.php

这工作正常,除非我在apache日志中收到如下所示的错误

AH01276:无法提供目录/ var / www / html / test / login /:找不到匹配的DirectoryIndex(index.php,index.html,index.cgi,index.pl,index.xhtml,index.htm)和服务器- Options指令禁止生成的目录索引

当我尝试通过改变文件名来解决这个问题login.php signup.php etc,以index.php我得到服务的那些文件回,因为他们确实存在,这意味着我不会得到403错误。我尝试拒绝访问我中的这些特定文件,.htaccess但随后包括jquery.load()函数在内的所有内容均被拒绝。我的问题是如何有效地执行我的工作而没有apache错误。


呼如林
浏览 207回答 1
1回答

慕尼黑的夜晚无繁华

您的输入.htaccess是错误的,您正在使用ErrorDocument 403来加载文件index.php,(ErrorDocument通常用于自定义错误页面,而不是用于加载普通资源),您希望Forbidden在尝试加载时遇到问题,login/因为此文件夹没有index.php文件,但我怀疑您有在您VirtualHost的选项中Indexes,此指令加载文件夹内容,但不会403出错。我VirtualHost的测试目的是:<VirtualHost localhost-test:80>&nbsp; ServerName localhost-test&nbsp; ServerAlias localhost-test&nbsp; ErrorLog "logs/localhost-test-error.log"&nbsp; TransferLog "logs/localhost-test-access.log"&nbsp; DocumentRoot "D:/Web/test"&nbsp; &nbsp; <Directory />&nbsp; &nbsp; &nbsp; Require all granted&nbsp; &nbsp; &nbsp; Options FollowSymLinks Includes ExecCGI&nbsp; &nbsp; &nbsp; AllowOverride All&nbsp; &nbsp; </Directory></VirtualHost>如果Indexes从中删除,则VirtualHost可以看到Forbidden错误自定义页面。你应该有:ErrorDocument 404 /public/error_pages/404.phpErrorDocument 500 /public/error_pages/500.phpErrorDocument 403 /public/error_pages/403.php现在,如果您尝试加载的文件夹中/login/没有index.php文件,则应该出现一个Forbidden 403带有自定义页面错误的错误,但同时使用JQuery可以加载该login.php文件。我希望这有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP