我看到了这样的一些问题(就像这一个),但没有一个问题具体解决这个问题.
因此Google 现在支持SPA,大多数Web浏览器都支持HTML5 pushState.
我的AngularJS(但可能是任何JS的东西)网站正在使用URL来确定API路由.然后它执行API调用,然后相应地呈现内容.
但是,现在Google将此网站标记为"被黑客入侵",因为每个网址都会返回HTTP 200状态代码(包含example.com/get-free-viagra).公平,但我如何归还404?或者至少告诉谷歌这是一个未找到的页面?他们似乎没有提供这些信息,我非常担心SEO.
我想到了一些想法:
window.location重定向到一个适当的404页.但是,我不确定Google是否会遵循它,并且已经不鼓励更改URL.rel="nofollow"未找到的页面,但我觉得这还不够.我现在正沮丧地倾向于第一种选择.
我正在编写一个非常简单的应用程序,要求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) 设计师做了一个非常好的设计,我很难申请.它将被应用于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.
我创建了一个嵌套的类别模型.要为产品选择类别,您会看到包含主要类别的下拉列表.当您选择一个时,会在右侧添加一个新的下拉列表,其子类别将与您选择的类别相对应.这将重复,直到达到最后一级.发生这种情况时$scope.product.category_id设置.我想在整个的字段集无效$scope.product.category_id的null.
我一直在使用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) 我需要以编程方式在我创建的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来解雇这个东西,但对于已经存在的功能来说,这也是一件很重要的事情!
我正在为在共享主机中运行的客户端编写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,但这应该不是问题,因为我从不打开多个文件.想法?
所以我写了一个嵌套资源的简单应用程序:帖子和评论.当然,帖子是父母,评论是孩子,每个一对一相关.很简单.现在我想要评论索引(和创建,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的事情?
在我的数据库中,我存储了每个记录的到期日期。有些记录不会过期(永远有效),此记录有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中删除所有过期的项目。这有可能吗?
javascript ×3
angularjs ×2
laravel-4 ×2
php ×2
algolia ×1
backbone.js ×1
css ×1
heroku ×1
heroku-api ×1
html ×1
html5 ×1
json ×1
laravel ×1
linux ×1
logging ×1
php-carbon ×1
seo ×1
validation ×1