我无法在本地主机中打开url内部带有":"的url例如,我无法打开http://bolehnonton.dev/Halo-4:-前进到黎明(这在我的本地主机中)。我浏览器中的结果页面是
禁止访问!
您没有访问请求对象的权限。要么被服务器读取保护或不可读。
如果您认为这是服务器错误,请联系网站管理员
错误403 bolehnonton.dev
Apache/2.4.16(Win32)OpenSSL/1.0.1p PHP/5.6.12
但是我可以用我的主机打开类似的url,http://bolehnonton.com/Halo-4:-前进至黎明
尽管两者的htaccess文件相似。
这是我在xamplep 上的vhost配置
<VirtualHost *:80>
ServerAdmin webmaster@bolehnonton.dev
DocumentRoot "C:/xampp/htdocs/bolehnonton.com"
ServerName bolehnonton.dev
<Directory C:/xampp/htdocs/bolehnonton.com>
Allow from all
Require all granted
Options Indexes
</Directory>
</VirtualHost>
这是Windows上的一个Apache错误,2009年被宣布为WONTFIX。我在libapr-1.dll
中修复了它,在srclibaprfile_iowin32filestat.c
中使用函数test_safe_name
为带冒号的名称返回ERROR_FILE_NOT_FOUND
。
if (*name == '?' || *name == '*')
return APR_EPATHWILD;
else
return (*name == ':') ? APR_FROM_OS_ERROR(ERROR_FILE_NOT_FOUND) : APR_EBADPATH; // was: APR_EBADPATH;
我可以避免重新编译Apache并修补二进制文件。
我刚刚在URL中遇到了同样的冒号问题。我正在实现分页,URL中的页码是在冒号后面指定的。
对于我的情况,解决方案是在开发环境(我的windows机器)中用另一个字符替换冒号,并在生产环境(linux机器)中保留冒号。
也许我的故事会对某些人有所帮助。