我在重定向通配符子域和处理内部URL缩短时遇到问题.
假设我的应用程序中有一个内部URL缩短器
example.com/b/ABCDE
Run Code Online (Sandbox Code Playgroud)
那会翻译
example.com/book/12345678-the-book-name
Run Code Online (Sandbox Code Playgroud)
引用的脚本/b/(我使用可以处理URL规则的PHP框架)将短ID ABCDE转换为书籍真实ID 12345678(和标题"书名"),然后将书籍的永久URL重定向example.com/book/12345678-the-book-name
所以,每当我在公告板,微博客网站或海报或名片等物理媒体上传播有关图书的链接时,我都会使用短链接(example.com/b/ABCDE而不是永久链接example.com/book/12345678-the-book-name).
接下来,我需要将所有通配符子域重定向到主域(www.example.com),同时保持请求URI,例如
http://random.example.com/book/11111111-some-book -> http://www.example.com/book/11111111-some-book
http://123456.example.com/book/22222222-another-book -> http://www.example.com/book/22222222-another-book
http://abcdefg.example.com/book/33333333-another-book-again -> http://www.example.com/book/33333333-another-book-again
Run Code Online (Sandbox Code Playgroud)
在我使用的所有规则之后添加以下规则
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.example.com [NC]
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
因此,具有example.com域的URL并且没有如下所示的前缀
http://example.com/book/11111111-some-book
Run Code Online (Sandbox Code Playgroud)
将转化为
http://www.example.com/book/11111111-some-book
Run Code Online (Sandbox Code Playgroud)
另一个结果是,如果内部URL缩短器使用没有前缀的普通域,则需要两次重定向才能解析.例如,
http://example.com/b/ABCDE
Run Code Online (Sandbox Code Playgroud)
将首先被重定向到
http://www.example.com/b/ABCDE
Run Code Online (Sandbox Code Playgroud)
然后被重定向到
http://www.example.com/book/12345678-the-book-name
Run Code Online (Sandbox Code Playgroud)
实际上,我不介意两次重定向.但我的SEO顾问说,两次重定向对我网站的搜索引擎优化不利.(我还是不知道为什么)
所以我尝试将最后一条规则改为下面
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{REQUEST_URI} ^/b/(.*)$
RewriteRule . index.php [L]
RewriteCond …Run Code Online (Sandbox Code Playgroud) 我似乎在Leaflet中找不到与Google Map“ idle”事件相同的map事件。
Google Map事件“ idle”的定义是“当地图在平移或缩放后变为空闲时,将触发此事件”。
https://developers.google.com/maps/documentation/javascript/reference#Map
我尝试了Leaflet的“ viewreset”,“ load”,“ blur”,“ focused”,“ moveend”,但它们与Google Map的“ idle”确实不同。
我能做的最好的就是使用这个
var foo = function(e){
console.log('Hello');
}
map.on('load', foo);
map.on('moveend', foo);
Run Code Online (Sandbox Code Playgroud)
只是想了解我是否在阅读手册时出错。或者,即使没有等同于Google Map的“ idle”的事件,是否有更好的方法来实现呢?
每次我部署我的Yii应用程序时,我都会更改其符号链接/var/www.像这样的东西
rm -f /var/www
ln -s /var/app-version /var/www
Run Code Online (Sandbox Code Playgroud)
但每次执行此操作时,用户会话都会失效(即所有用户都已注销并且CSRF令牌已重置).
对于我使用的会话CCacheHttpSession.像下面的东西main.php
'components' => [
'memcache' => [
'class' => 'CMemCache',
'servers' => [
[
'host' => 'localhost',
'port' => 11211,
]
]
],
'user' => [
'class' => 'WebUser',
'allowAutoLogin' => true,
],
'session' => [
'class' => 'CCacheHttpSession',
'cacheID' => 'memcache'
]
]
Run Code Online (Sandbox Code Playgroud)
我不确定这种错误配置是在PHP级别还是Yii级别,但我做错了什么?
在Yii框架中,我们必须向POST数据添加CSRF令牌,以便可以验证请求.
令牌由PHP生成,我正在传递这样的变量
angular.module('MyConstant', []).constant("MyConstant",
{'postdata': {'_csrf': 'ABCDEF'}}); //this is written by PHP
var app = angular.module('MyApp', ['MyConstant']);
app.controller('MyCtrl', [
'$scope', '$http', 'MyConstant',
function ($scope, $http, MyConstant) {
}]);
Run Code Online (Sandbox Code Playgroud)
每当我想发送POST时,我都必须做这样的事情.
$http.post(url, angular.extend(MyConstant.postdata, {data: mydata}));
Run Code Online (Sandbox Code Playgroud)
POST主体将是这样的
{"_csrf": "ABCDEF", "data": "bla bla bla"}
Run Code Online (Sandbox Code Playgroud)
我只是好奇是否有一个"Angular方式"来覆盖$http.post自动附加数据以避免代码重复,angular.extend(ViewConstants.postdata如上所述.
UPDATE
感谢@GregL的指点.我可以这样做使用interceptors
app.config(['$httpProvider', 'MyConstant',
function ($httpProvider, MyConstant) {
$httpProvider.interceptors.push(function () {
return {
request: function (config) {
if (config.method == "POST"){
config.data = angular.extend(MyConstant.postdata, config.data);
}
return config;
}
};
});
}]);
Run Code Online (Sandbox Code Playgroud) 我像这样使用Google Visualization的ColumnChart制作了一个图表。

它基本上是使用3 x 7矩阵的堆积式柱形图。在每个栏中,我都删除了另外两行的数据。我的问题是如何使黄色条(或其他条)看起来像从一开始就使用Javascript代码被单击。就像下面一样。

*请注意黄色栏中的浅色边框。
我有几行,并希望将该行分组为5,然后将其内爆以进行MySQL IN ()查询.
直到这个我已经做到了
awk '{ printf "%s", $0; if (NR % 5 == 0) print ""; else printf " " }
Run Code Online (Sandbox Code Playgroud)
例如,我想在下面这些行
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
成为
1,2,3,4,5
6
Run Code Online (Sandbox Code Playgroud)
如果我用这个
awk '{ printf "%s", $0; if (NR % 5 == 0) print ""; else printf "," }
Run Code Online (Sandbox Code Playgroud)
,如果所有行都不能被5整除,那么输出将在尾随行中
UPDATE
以前的标题是awk而不是bash,但事实证明有比awk更简单的解决方案.我的目标是做这样的事情
$seq 12 | pr -7ats, | xargs -I X echo "SELECT * FROM Table IN (X)" #or execute mysql
SELECT * FROM Table WHERE id …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 Google 云监控查询语言,可以根据基于日志的指标显示对 kubernetes 中所有容器的所有请求的计数。查询如下。
k8s_container::logging.googleapis.com/user/service-api-gateway-prod-request-in-count | sum
Run Code Online (Sandbox Code Playgroud)
小部件将如下所示
我想将折线图的长标签重命名为更短的标签,例如“请求计数”。我该怎么做?
google-cloud-platform google-cloud-monitoring monitoring-query-language
如何使用单线sed或perl替换换行符和空格,直到特定字符串?
例如,我想在文件中的字符串'XYZ'之前替换换行符和以下空格。所有以单词“ XYZ”开头的行都将附加在前一行之前(带有一个额外的空格)。
lorem ipsum dolor坐在amet
XYZ lorem ipsum dolor坐在amet
xxx lorem ipsum dolor坐amet
DDD lorem ipsum dolor坐在amet
XYZ lorem ipsum dolor坐在amet
cccc lorem ipsum dolor坐amet
XYZ lorem ipsum dolor坐在amet
输出将是
lorem ipsum dolor坐amet XYZ lorem ipsum dolor坐amet
xxx lorem ipsum dolor坐amet
DDD lorem ipsum dolor坐在阿梅特XYZ lorem ipsum dolor坐在阿梅特
cccc lorem ipsum dolor坐amet XYZ lorem ipsum dolor坐amet
我在 Spring Boot 中有一个类似这样的接口和实现类,
public interface Foo {
String foo();
}
//
import org.springframework.stereotype.Component;
@Component
public LocalFooImpl implements Foo {
String foo() {
return "I am local. No network required.";
}
}
//
import org.springframework.stereotype.Component;
@Component
public RemoteFooImpl implements Foo {
String foo() {
return "I am remote. A lot of network required.";
}
}
Run Code Online (Sandbox Code Playgroud)
我将在 RestController 中使用它。我在想像下面这样的事情。如果我错了,请纠正我,我对 Spring Boot 很陌生。
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Autowired
private Foo myFoo;
}
Run Code Online (Sandbox Code Playgroud)
我想,当我在远程环境中运行此控制器时,它将使用该RemoteFooImpl实例,但对于本地开发,它将使用LocalFooImpl. 在远程部署中,我将放置一个环境变量,例如IS_REMOTE=1 …
angularjs ×1
apache ×1
awk ×1
bash ×1
google-maps ×1
http-post ×1
java ×1
javascript ×1
leaflet ×1
mod-rewrite ×1
perl ×1
php ×1
redirect ×1
sed ×1
seo ×1
spring ×1
spring-boot ×1
terminal ×1
unix ×1
yii ×1