【问题标题】:How can I solve my localhost issue on mac?如何解决 Mac 上的本地主机问题?
【发布时间】:2013-08-06 23:22:43
【问题描述】:

我正在我的 Mac 上做一些快速的 Ajax 实验。 我的 script/main.js 文件夹中有以下 javascript 代码。

'use strict';
 var button = document.getElementsByClassName('update');

button[0].addEventListener('click', function() {
    worker.updateCustomer();
});

var worker = {
    updateCustomer: function(customerInfo, cb) {
        $.ajax({
            url: 'data/customer.json',
            type: 'POST',
        }).done(function(data) {
            log('response', data);
        }).fail(function() {
            log('failed');
        });
    }
};

这是我的工作目录结构:

  • index.html
  • js/jquery.js
  • js/main.js

每当我点击按钮时,我都会得到以下信息:

POST localhost:9000/data/customer.json 404 (Not Found)
failed

话虽如此,有几点需要说明:

我以前做 PHP 开发,所以要访问我在 Sites/ 文件夹下的项目,我必须去 localhost/~username/folder/file.php

目前在我的机器上,在浏览器中输入localhost会返回以下内容:

Forbidden
You don't have permission to access / on this server.

我查看了 httpd.conf 并进行了修改

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all  #change here
</Directory>

现在得到:

Not Found

The requested URL / was not found on this server.

我相信我的问题是因为直接访问我的本地主机文件夹而不添加/~username/.. 是不可能的。

请指教。

【问题讨论】:

    标签: javascript jquery httpd.conf yeoman


    【解决方案1】:

    这里:

    POST localhost:9000/data/customer.json 404 (Not Found)
    failed
    

    您应该知道,当使用 HTTP 请求时,PHP 服务器期望获取现有文件并将其传输到客户端(如果此文件具有 .php 扩展名 - 执行脚本并发送标准输出)。 PHP 还允许您通过 .htaccess 文件配置进行内部重定向。例如:

    (1)ErrorDocument 404 /path-to-file(如果在服务器上找不到请求的文件)

    (2)ErrorDocument 403 /path-to-file(如果在服务器上找到请求的文件但禁止直接访问)

    我建议您同时使用这两种方法。使用以下内容在 /data/ 上创建一个 .htaccess 文件:

    deny from all
    ErrorDocument 403 /data-manager.php
    ErrorDocument 404 /data-manager.php
    

    在顶层目录('public-html')上创建'data-manager.php'。通过 php 脚本你可以使用这个:

    <?php
      echo 'Requested url was: ' . $_SERVER['REQUEST_URI'];
     ?>
    

    【讨论】:

    • 我确实得到了相同的结果。当转到link 时,屏幕会回显以下内容:请求的 url 是:/~roland/ajax_test/data-manager.php
    • 如果您正在访问“data-manager.php”,这是正确的响应。尝试获得对“/data/some-file”(您所在的 .htaccess 文件所在的位置)的回显响应。您是否尝试在 httpd.conf 文件中将每个 'DocumentRoot' 参数更改为 'path to ./~username/' 以删除 HTTP 请求中的 '/~username/' 名称?
    • 这种方法的问题在于,当我在站点文件夹中时,它只会重定向到“localhost/~username/”文件夹。我不认为当我使用 grunt 或 python 服务器时会出现这种情况
    • 解决方案是将以下内容添加到 httpd-vhosts.conf 文件中: DocumentRoot "/Users/username/Sites/" 选项 FollowSymLinks 索引 MultiViews AllowOverride All ServerName localhost
    猜你喜欢
    • 2020-04-20
    • 1970-01-01
    • 2018-07-09
    • 2011-05-30
    • 1970-01-01
    • 2021-03-13
    • 2017-11-22
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多