wamp中自己编写的项目放在www文件夹中打不开无法访问的解决方案
老版本解决方案:
打开www目录下的index.php文件,
搜索if (is_dir($file) && !in_array($file,$projectsListIgnore)) ,判断逻辑里面的a标签就是目录,
在http://后面加上localhost/即可
——————————————————————————————————————————————
本人使用的是最新的wamp3.0.6版本,代码长得不一样。不过也差不多
下面是分析(博主建立的项目文件夹为w3c_learn,并且因为iis的原因将wamp的服务端口设置为8080)
这个是没有改变文件内容时点击自己建的项目时浏览器的报错。
可以看出,服务器的原意是将这个文件名作为主机名,并加上了自己设置的端口(8080)。因为试过用http://localhost:8080/w3c_learn/这个URL,是能打开项目网页的。所以不难想出,解决这个问题的途径是有两个的。
1将项目文件夹的URL设置为http://localhost:8080/w3c_learn/
2将http://w3c_learn:8080/这个URL解析到(映射到?不知道哪个说法合适)http://localhost:8080/w3c_learn/。
说实话两种方法我都还不会,但是老版的解决方案提供了线索。对应到新版的代码,可以看出,这段代码就是用来合成这个项目文件夹的URL的。
所以对这段代码进行了分析:
再贴一遍
代码只是一个很简单的if...else...语句。用来创建自建项目列表的,每个列表项都是一个带有超链接(<a>)的<li>
代码核心是href的属性值,也就是URL。
if句块合成的URL是:http://+文件名(w3c_learn)+端口号(:8080)+/
else句块合成的URL是:http://localhost+端口号+/+文件名+/
结合报错出来的这个URL(http://w3c_learn:8080/),不难看出这个if...else...执行的是第一句,而我们要的正好是第二句,也就是else语句执行的结果。
——————————————————————————————————————————————————
所以,解决方案在这里:
打开www目录下的index.php文件,
搜索if (is_dir($file) && !in_array($file,$projectsListIgnore))
将if的语句块和else的语句块进行对调就ok了。像这样
重要提醒:修改完文件要保存,退出wamp,再重启。
————————————————————————————————————————————
补充:这里的解决方案用的是上面提到的两种途径中的第一种,如果有会第二种,使用映射或解析的欢迎回复补充。
另外,这种方法只是简单看了这一小段代码进行分析的。看起来似乎是官方php配置文件本身有问题?我想应该不是吧,如果有知道更规范的设置方法的大神,烦请不吝赐教。