我在Windows 7 PC上的localhost上托管了一个PHP网站,运行XAMPP 1.8.2。
我有重写规则如下:
Options -Indexes +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?rt=$1 [QSA,L]
</IfModule>
要重写网址,以便它总是会出现如下内容:http:// mysite.com/index.php?rt= [controller] / [action] / [params]
直到我发现处理网址时失败,直到我发现它为止:http:// mysite.com/error/xxx 。除了转到http:// mysite.com/index.php?rt=error/xxx 之外,它还会返回404状态。 (我的网站根文件夹下没有子目录调用错误)
我仔细检查了我的PHP代码,我确信这不是原因,我将我的网站上传到远程服务器,一切都很好。所以我很确定在我的XAMPP(Apache)中没有正确配置某些东西,这使得/ error / xxx请求得到了不同的处理。
我也发现访问http:// mysite.com/error/ 给了我403但http:// mysite.com/ [something_else] / 没问题。
以防万一,我也在这里粘贴我的vhost.conf:
<VirtualHost *:80>
DocumentRoot "/xampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "E:\htdocs\mysite.dev"
ServerName mysite.dev
</VirtualHost>
与httpd.conf相关:
<Directory "E:\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
感谢任何帮助!
答案 0 :(得分:1)
最后在浪费了一个小时之后弄明白了!
在httpd-multilang-errordoc.conf
下有一个名为/xampp/apache/conf/extra
的配置文件,里面是这样的:
<IfModule alias_module>
<IfModule include_module>
<IfModule negotiation_module>
Alias /error/ "C:/xampp/apache/error/"
<Directory "C:/xampp/apache/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Require all granted
LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr
ForceLanguagePriority Prefer Fallback
</Directory>
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
ErrorDocument 410 /error/HTTP_GONE.html.var
ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
</IfModule>
</IfModule>
</IfModule>
第Alias /error/ "C:/xampp/apache/error/"
行处理所有请求匹配domainname.com/error/
并将其重写为C:/xampp/apache/error/
。
简单地评论这条线就解决了我的问题。不知道它做了什么,但做完了。
答案 1 :(得分:0)
从您的上一条评论中可以看出,Apache甚至没有正确配置到您网站的路径中!
您需要修改Xampp\apache\conf\httpd.conf
文件。
首先制作它的BACKUP副本。
编辑以...开头的行
DocumentRoot "
..如果它是Windows机器,它使用/而不是\保留那些。
然后您需要编辑以...开头的行
<Directory "
请注意,还有一个CGI版本。
如果您已正确编辑文件保存,然后重新启动Apache。在重新启动Apache之前,更改不会生效。