在apache窗口上访问禁止包含冒号符号“:”的URL

时间:2015-11-04 08:04:52

标签: apache .htaccess url localhost

我无法在本地主机的url中使用“:”打开url 例如,我无法打开http://bolehnonton.dev/Halo-4:-Forward-Unto-Dawn(这是在我的localhost中)。浏览器中的结果页面是

  

禁止访问!

     

您无权访问请求的对象。它是   读取保护或服务器无法读取。

     

如果您认为这是服务器错误,请与网站管理员联系   错误403 bolehnonton.dev
  Apache / 2.4.16(Win32)OpenSSL / 1.0.1p PHP / 5.6.12

但我可以使用我的托管http://bolehnonton.com/Halo-4:-Forward-Unto-Dawn

打开类似的网址

虽然两者的htaccess文件都很相似。

这里是我的xampp上的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>

2 个答案:

答案 0 :(得分:1)

这是Windows上的Apache bug,在2009年被声明为WONTFIX。我在libapr-1.dll中修复了它,在test_safe_name中修复了srclib\apr\file_io\win32\filestat.c以返回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;

I could avoid recompiling Apache and patched the binary.

答案 1 :(得分:0)

我刚遇到URL中冒号的相同问题。 我正在实现分页,并且在冒号之后指定了URL中的页面数。

针对我的情况的解决方案是将冒号替换为开发环境(我的Windows机器)中的另一个字符,而将冒号用于生产(Linux机器)。

也许我的故事会对某人有所帮助。