小编Mau*_*uro的帖子

如何从SPA返回HTTP 404状态代码?

我看到了这样的一些问题(就像这一个),但没有一个问题具体解决这个问题.

因此Google 现在支持SPA,大多数Web浏览器都支持HTML5 pushState.

我的AngularJS(但可能是任何JS的东西)网站正在使用URL来确定API路由.然后它执行API调用,然后相应地呈现内容.

但是,现在Google将此网站标记为"被黑客入侵",因为每个网址都会返回HTTP 200状态代码(包含example.com/get-free-viagra).公平,但我如何归还404?或者至少告诉谷歌这是一个未找到的页面?他们似乎没有提供这些信息,我非常担心SEO.

我想到了一些想法:

  • 弃用我当前的设置(我使用AWS S3来托管静态网站),然后使用expressJS框,使用中间件执行API调用并在需要时返回404.但是,我不喜欢这种方法,因为它会损害性能(每个前端请求有两个API调用).
  • 使用window.location重定向到一个适当的404页.但是,我不确定Google是否会遵循它,并且已经不鼓励更改URL.
  • 使用rel="nofollow"未找到的页面,但我觉得这还不够.

我现在正沮丧地倾向于第一种选择.

javascript seo html5 angularjs single-page-application

13
推荐指数
1
解决办法
2332
查看次数

如何处理包含Laravel上的碳日期的模型的JSON响应?

我正在编写一个非常简单的应用程序,要求Backbone.js模型和Laravel 4模型同步.当Laravel模型涉及日期时,就会出现问题.我的Laravel控制器看起来像这样:

class OrderController extends \BaseController {
    ...
    public function update($id = null) {
        ...
        if (Request::ajax()) 
            return $order;
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这成功响应了$ order的JSON表示,客户端用它来保持同步.但是,Carbon日期作为Carbon对象表示返回,如下所示:

{
    "delivered_at":{"date":"2014-02-25 12:55:29","timezone_type":3,"timezone":"America\/Argentina\/Buenos_Aires"}
}
Run Code Online (Sandbox Code Playgroud)

我可以设法将此解释为javascript Date对象,但是,当此对象返回到laravel时,JSON将删除Carbon该类,而Eloquent 无法将其作为日期读取:

[2014-02-25 12:58:32] log.ERROR: exception 'ErrorException' with message 'preg_match() expects parameter 2 to be string, array given' in vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2210
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleError(2, 'preg_match() ex...', '/Users/maurospi...', 2210, Array)
#1 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2210): preg_match('/^(\d{4})-(\d{2...', Array)
#2 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2151): Illuminate\Database\Eloquent\Model->fromDateTime(Array)
#3 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(306): Illuminate\Database\Eloquent\Model->setAttribute('delivered_at', Array)
#4 app/controllers/OrderController.php(120): Illuminate\Database\Eloquent\Model->fill(Array)
#5 [internal …
Run Code Online (Sandbox Code Playgroud)

javascript json backbone.js laravel-4 php-carbon

9
推荐指数
2
解决办法
8795
查看次数

多个相同宽度的多行HTML文本?

设计师做了一个非常好的设计,我很难申请.它将被应用于Wordpress帖子标题,因此它应该适用于任何文本.

所以在我关闭她的想法之前,我会检查SO :).

标题应该是多行的,每行一个或多个单词.将根据给定算法使用PHP拆分行,该算法将字符计数为尽可能均匀的行,如下所示:

<h1>
    <span>Lorem Ipsum</span>
    <span>Dolor Sit</span>
</h1>
Run Code Online (Sandbox Code Playgroud)

font-size应调整每一行,使其宽度等于h1盒子的整个宽度(固定).此外,line-spacing将使用一些否定.它应该如下所示:

在此输入图像描述

我可以在这上面使用CSS3和JS.

html javascript css

5
推荐指数
1
解决办法
1040
查看次数

如何验证ng重复的下拉类别选择器?

我创建了一个嵌套的类别模型.要为产品选择类别,您会看到包含主要类别的下拉列表.当您选择一个时,会在右侧添加一个新的下拉列表,其子类别将与您选择的类别相对应.这将重复,直到达到最后一级.发生这种情况时$scope.product.category_id设置.我想在整个的字段集无效$scope.product.category_idnull.

我一直在使用angular-bootstrap-show-errors进行验证,我尝试将它与ui-utils混合使用自定义函数来实现这个:validate_category().

这是我使用的HTML:

<span ng-repeat="parent_id in category_dropdown_parents" show-errors="{ skipFormGroupCheck: true }">
    <select class="form-control" name="category_id"
        ng-init="selected_category[$index] = init_select($index);"
        ng-model="selected_category[$index]"
        ng-options="category.name for category in (categories | filter : { parent_id: parent_id } : true ) track by category.id "
        ng-change="select_category(selected_category[$index], $index)"

        ui-validate="'validate_category()'" // added this to work with ui-utils

        >
    </select> 
    <span ng-if="$index+1 != category_dropdown_parents.length">/</span>
</span>
Run Code Online (Sandbox Code Playgroud)

这是我简单的验证功能:

$scope.validate_category = function() {
    return  (   $scope.product.category_id !== null 
            &&  $scope.product.category_id !== undefined); …
Run Code Online (Sandbox Code Playgroud)

validation angularjs angularjs-ui-utils

5
推荐指数
1
解决办法
526
查看次数

如何通过REST API在Heroku应用程序上运行控制台命令?

我需要以编程方式在我创建的Heroku应用程序上执行命令,使用他们的REST API.从我的控制台,我经常这样做:

$ heroku run [command]
Run Code Online (Sandbox Code Playgroud)

我正在寻找像这样的REST API请求:

POST /apps/{app_id}/run
Run Code Online (Sandbox Code Playgroud)

但我无法在文档中找到它,我只是辞职承认没有实现.这是一个默认行为太多了.

我知道我可以在请求者框上安装Heroku Toolbelt,但我不喜欢这样.我也可以设置一个经过身份验证的URL来解雇这个东西,但对于已经存在的功能来说,这也是一件很重要的事情!

heroku heroku-api

4
推荐指数
1
解决办法
704
查看次数

无法打开流:打开的文件太多

我正在为在共享主机中运行的客户端编写PHP CLI脚本.它使用简单的函数登录到文件,如:

function log_entry($msg) {
    global $log_file, $log_handle;
    $msg =  "[".date('Y-m-d H:i:s')."] ".$msg."\n";
    echo $msg;
    $log_handle = fopen($log_file, 'a');
    fwrite($log_handle, $msg);
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

PHP Warning:  fopen(./logs/sync.20130410.log) 
[<a href='function.fopen'>function.fopen</a>]: failed to open stream: 
Too many open files in ./functions.php on line 61
Run Code Online (Sandbox Code Playgroud)

我认为使用相同的句柄存在问题,因此我将其更改为:

function log_entry($msg) {
    global $log_file;
    $msg =  "[".date('Y-m-d H:i:s')."] ".$msg."\n";
    echo $msg;
    $log_handle = fopen($log_file, 'a');
    fwrite($log_handle, $msg);
    fclose($log_handle);
}
Run Code Online (Sandbox Code Playgroud)

但那没用.我总是在同一个日志行中得到错误.当我这样做时,ulimit -n我得到1024,但这应该不是问题,因为我从不打开多个文件.想法?

php linux logging

3
推荐指数
1
解决办法
6147
查看次数

如何在Laravel 4上路由子资源?

所以我写了一个嵌套资源的简单应用程序:帖子和评论.当然,帖子是父母,评论是孩子,每个一对一相关.很简单.现在我想要评论索引(和创建,POST)页面生活posts/{post_id}/comments,更新(PUT)生活/posts/{post_id}/comments/{comment_id}.所以我尝试了这个:

Route::resource('posts', 'PostsController');

Route::group(array('prefix' => 'posts/{post_id}'), function() {
    Route::resource('comments', 'CommentsController');
});
Run Code Online (Sandbox Code Playgroud)

但由于路由名称已注册为,因此无法正常工作posts.{post_id}.comments.create.基本上post_id占位符被计为路线的一部分,并不是很整洁.任何方式做得很好还是我应该逐个编写路由并摆脱group/Route :: resource/prefix的事情?

php laravel laravel-4

3
推荐指数
1
解决办法
994
查看次数

阿尔戈利亚:如何添加(可能)添加数字析取细化?

在我的数据库中,我存储了每个记录的到期日期。有些记录不会过期(永远有效),此记录有null过期日期。

因此,说一条SQL语句以获取应显示的记录的逻辑是:

SELECT * FROM listings WHERE expires > NOW() OR expires IS NULL;
Run Code Online (Sandbox Code Playgroud)

为了在阿尔戈利亚获得这些记录,我目前正在使用它:

helper.addNumericRefinement('expires', '>=', moment().utc().startOf('day').unix());
Run Code Online (Sandbox Code Playgroud)

哪个遗漏了expires = null记录,我希望将它们放进去。

我正在尝试为自己保存一个cron脚本,该脚本每天晚上都将从Algolia中删除所有过期的项目。这有可能吗?

algolia

2
推荐指数
1
解决办法
203
查看次数