apache伪静态参数超过9个的解决办法

2013-11-28 寒川 计算机

apache服务器,利用.htaccess做伪静态筛选,由于条件比较多,且筛选的参数和值均为伪静态参数,一个7个筛选条件就多大14个伪静态参数。简直坑爹啊。下面是解决办法:

RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2&$3=$4 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php$1=$2&$3=$4&$5=$6 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2&$3=$4&$5=$6&$7=$8 [L]
#上面参数未超过9个,下面超过9个参数的情况。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(.*)\.html a-$9\.html$1=$2&$3=$4&$5=$6&$7=$8 [C,NC]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3 [QSA,L,NC] #结合上一行,共计10个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5 [QSA,L,NC] #结合第6行,共计12个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5=$6&$7 [QSA,L,NC] #结合第6行,共计14个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5=$6&$7=$8&$9 [QSA,L,NC] #结合第6行,共计16个参数。

访问地址分别如下:

a-a1.html 对应url参数为a.php?a=1(其中参数a可以为b、c、d、e、f、g)
a-a1-b1.html 对应url参数为a.php?a=1&b=1
……
a-a1-b1-c1-d1-f1-g1.html 对应url参数为a.php?a=1&b=1&c=1&d=1&e=1&f=1&g=1

对于上述第4行,共计14个伪静态参数。

标签: apache 伪静态 htaccess 超过9个参数

评论(0) 浏览(8975)

mysql数据库表A中某列update更新至表B中某列

2013-11-28 寒川 计算机

大概需求是这样的,有两个表,tablea和tableb,他有相同的id,现在需要将表A中的fielda数据更新至表B中的fielda列,换句话说,要更新表B中的fieldb列,其数据来源于表A的fielda列。貌似mysql不支持update select这种,下面是解决方案:


update tableb b,(select b.id as aid,a.fielda as fieldc
from tablea a,tableb b
where a.id=b.id
group by aid) c
set b.fieldb=c.fieldc
where b.id=c.aid 
经测试,运行正常。数据表如下:
 
表A数据结构及数据如下:
CREATE TABLE IF NOT EXISTS `tablea` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fielda` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

INSERT INTO `tableb` (`id`, `fielda`) VALUES
(1, 2),
(2, 2),
(3, 2),
(4, 3),
(5, 5),
(6, 10),
(7, 4),
(8, 50);
表B数据结构及数据如下:

CREATE TABLE IF NOT EXISTS `tableb` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fieldb` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

INSERT INTO `tableb` (`id`, `fieldb`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 1),
(5, 1),
(6, 1),
(7, 1),
(8, 1);
经过执行文中解决方案的sql命令,B表的fieldb中的数据变为与A表一致。

标签: mysql update 数据表A 数据表B

评论(0) 浏览(7162)

腾讯云服务器快照恢复删除的数据

2013-11-21 寒川 互联网事

好吧,这是标题党,截止今天(2013年11月21日),腾讯游云服务器根本就没有快照功能,所以,要删除数据或重要文件的朋友,一定睁大眼睛,千万要小心了。

今天本来是要删除两篇文章,当然,是直接在mysql中操作的数据,手贱加高度近视,一不小心drop掉了一个表,我勒个去,mysql表没了,赶紧恢复吧,一看mysql配置,我艹,没开启数据库备份,没开启二进制日志,这要如何找回数据呢?在绝望之际,突然想到,咱不是用的腾讯云服务器么?不是云么?高端大气上档次的云啊,有木有?肯定有办法吧?比如啥快照啊,数据恢复啊,灾难数据恢复啊?有木有?感紧联系腾讯客服,能帮俺恢复一下数据么?看看下面的记录:


2013-11-21 12:22:44 腾讯云服务团队
您好,目前非腾讯云服务团队正常工作时间,企业QQ提供7*24小时故障值班服务。
1、 故障值班 :如遇紧急故障,请您【 点击这里 】联系值班人员;
2、电话报障:请拨打0755-26633085故障值班专线(周一至周五00:00-09:30,周六日18:00-09:30);
3、您可以查看相关文档 【 资料库 】,获得帮助;
4、正常工作时间:周一至周五 09:30—12:00,14:00—18:00 (法定假期除外); 

2013-11-21 12:23:06 腾讯云服务团队
您好,售后服务02为您服务。 

2013-11-21 12:23:16 腾讯云服务团队
您好,很高兴为您服务!您接入的是腾讯云在线客服,请问有什么可以帮到您? 

2013-11-21 12:23:45 寒川
你好,我今天误删了云服务器数据库中的一个表,能否通过还原快照的方式回复?

2013-11-21 12:24:19 腾讯云服务团队
云数据库吗 

2013-11-21 12:24:28 寒川
云主机呢

2013-11-21 12:24:42 寒川
晕服务器

2013-11-21 12:24:42 腾讯云服务团队
是您自己搭建的mysql? 

2013-11-21 12:24:44 寒川
恩

2013-11-21 12:25:37 腾讯云服务团队
快照应该指的是程序方面的,您数据库内部的操作,应该是要在数据库里恢复 

2013-11-21 12:26:59 腾讯云服务团队
也就是您数据库是否有做快照 

2013-11-21 12:27:04 寒川
没呢。

2013-11-21 12:27:13 腾讯云服务团队
如果没有的话,应该恢复不了 

2013-11-21 12:27:43 腾讯云服务团队
您可以尝试一下 

2013-11-21 12:28:10 寒川
比如我云服务器保存点图片,删除后不能恢复?

2013-11-21 12:28:18 腾讯云服务团队
这个可以 

2013-11-21 12:29:05 寒川
道理一样啊。我myslq 删除掉了一个表,通过恢复文件的方式不能恢复回来?

2013-11-21 12:31:15 腾讯云服务团队
这个我找相关同事核实一下 

2013-11-21 12:32:06 寒川
恩。我理解的快照应该可以,希望你们能帮帮忙。虽然数据不重要。

2013-11-21 12:38:01 腾讯云服务团队
我刚核实,是可以的 

2013-11-21 12:38:19 腾讯云服务团队
因为您的msyql部署在服务器的某个目录 

2013-11-21 12:38:20 寒川
非常感谢,麻烦给我还原一下?

2013-11-21 12:38:24 寒川
是的。

2013-11-21 12:38:29 腾讯云服务团队
这个是要自己操作的 

2013-11-21 12:38:42 寒川
咋操作?

2013-11-21 12:38:53 腾讯云服务团队
您刚不是做了快照? 

2013-11-21 12:39:02 寒川
没呢。

2013-11-21 12:41:49 寒川
后台没快照的地方。就得看云服务器有木有每天或者一定时间段自动快照了。

2013-11-21 12:41:52 腾讯云服务团队
没有做快照,怎么能恢复 

2013-11-21 12:42:08 寒川
 是啊。

2013-11-21 12:42:43 寒川
马总的云服务器没快照功能,不能这么坑吧?

2013-11-21 12:43:25 腾讯云服务团队
我们现在有重装功能 

2013-11-21 12:43:48 寒川
重装后啥都木有了。

2013-11-21 12:43:54 寒川
这可不行。

2013-11-21 12:45:08 腾讯云服务团队
现在是还没有快照功能 

2013-11-21 12:45:15 腾讯云服务团队
您可以从binlog那里恢复 

2013-11-21 12:45:33 寒川
关键的关键mysql没开启二进制日志。

2013-11-21 12:45:49 寒川
看来只能从谷歌公司的快照中找回数据了。

2013-11-21 12:48:32 腾讯云服务团队
那就是您那边DBA的问题了 

2013-11-21 12:48:40 腾讯云服务团队
mysql的binlog也不开启。。。 

2013-11-21 12:49:15 寒川
恩恩。

2013-11-21 12:50:30 腾讯云服务团队
感谢您的支持,请问您还有其他问题需要咨询么? 

2013-11-21 12:51:17 寒川
木有了。感觉腾讯云有点烂[表情]?

2013-11-21 12:51:19 寒川
拜拜。

2013-11-21 12:53:31 腾讯云服务团队
很抱歉,现在是还没有退出快照功能 

2013-11-21 12:54:00 腾讯云服务团队
以后会逐步完善 

2013-11-21 12:54:02 寒川
木事。数据不重要。呵呵。

2013-11-21 12:54:04 腾讯云服务团队
您的十分满意,我们的无限动力!感谢您的咨询,祝您生活愉快! 

2013-11-21 12:54:13 腾讯云服务团队
 [表情] 

血与泪的教训,最后看了只能从谷歌快照找回数据了。


标签: mysql 腾讯云主机 数据恢复

评论(0) 浏览(13614)

今天闲来没事,虚拟机安装个CentOS6.4玩玩。

2013-11-13 寒川 计算机

先安装过程的截图:

CentOS-2013-11-13-20-57-47.png

 

再上安装完成的截图(话说挺漂亮的界面,不过一般不用吧。):

CentOS-2013-11-13-21-15-17.png

 

然后讲讲CentOS 6.4 安装配置 LAMP 服务器(Apache+PHP5+MySQL)。

以前要么用的别人装好的带web的服务器,要么装的ubuntu然后装的web服务器。今天闲的蛋疼,来一下CentOS的。话说这货真的好用。下面介绍CentOS6.4安装配置LAMP服务器:

一、安装前的准备

1、配置防火墙,开启 80 端口、3306 端口。

用vi或文本编辑器打开/etc/sysconfig/iptables,在-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT下面一行加入如下代码:

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT   #允许 80 端口通过防火墙

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT   #允许 3306 端口通过防火墙

保存后,重启防火墙:/etc/init.d/iptables restart  #最后重启防火墙使配置生效。

 2、关闭 SELINUX

vi /etc/selinux/config

#SELINUX=enforcing       #注释掉

#SELINUXTYPE=targeted    #注释掉

SELINUX=disabled         #增加

:wq  #保存,关闭

shutdown -r now   #重启系统

二、安装 MySQL

1、安装 MySQL

yum install mysql mysql-server   #询问是否要安装,输入 Y 即可自动安装,直到安装完成

/etc/init.d/mysqld start   #启动 MySQL

chkconfig mysqld on   #设为开机启动

cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件(注意:如果/etc 目录下面默认有一个my.cnf,直接覆盖即可)

2、为 root 账户设置密码

mysql_secure_installation

回车,根据提示输入 Y

输入 2 次密码,回车

根据提示一路输入 Y

最后出现:Thanks for using MySQL!

MySql 密码设置完成,重新启动 MySQL:

/etc/init.d/mysqld restart #重启

/etc/init.d/mysqld stop   #停止

/etc/init.d/mysqld start #启动

三、安装 PHP5

1、安装 PHP5

yum install php

       根据提示输入 Y 直到安装完成  

2、安装 PHP 组件,使 PHP5 支持 MySQL

yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

这里选择以上安装包进行安装

      根据提示输入 Y 回车

/etc/init.d/mysqld restart  #重启 MySql

/etc/init.d/httpd restart  #重启 Apche

 

配置篇

一、Apache 配置

vi /etc/httpd/conf/httpd.conf   #编辑文件

ServerTokens OS      在 44 行  修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)

ServerSignature On   在 536 行 修改为:ServerSignature Off (在错误页中不显示 Apache 的版本)

Options Indexes FollowSymLinks   在 331 行 修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行 CGI 及 SSI,禁止列出目录)

#AddHandler cgi-script .cgi  在 796 行 修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl 的 CGI 脚本运行)

AllowOverride None   在 338 行 修改为:AllowOverride All (允许.htaccess)

AddDefaultCharset UTF-8  在 759 行 修改为:AddDefaultCharset GB2312  (添加 GB2312 为默认编码)

Options Indexes MultiViews FollowSymLinks  在 554 行 修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)

DirectoryIndex index.html index.html.var  在 402 行 修改为:DirectoryIndex index.html index.htm Default.html Default.htm

index.php Default.php index.html.var   (设置默认首页文件,增加 index.php)

KeepAlive Off   在 76 行 修改为:KeepAlive On (允许程序性联机)

MaxKeepAliveRequests 100   在 83 行 修改为:MaxKeepAliveRequests 1000 (增加同时连接数) 

:wq!  #保存退出

/etc/init.d/httpd restart  #重启

rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html    #删除默认测试页

二、php 配置

vi  /etc/php.ini   #编辑

date.timezone = PRC     #在 946 行 把前面的分号去掉,改为 date.timezone = PRC

disable_functions

= passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,

ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,pope

n,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posi

x_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid,

posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,

posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty,

posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,

posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

 #在 386 行 列出 PHP 可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

expose_php = Off        #在 432 行 禁止显示 php 版本的信息

magic_quotes_gpc = On   #在 745 行 打开 magic_quotes_gpc来防止 SQL 注入

short_open_tag = ON     #在 229 行支持 php短标签

open_basedir = .:/tmp/  #在 380 行 设置表示允许访问当前目录(即 PHP 脚本文件所在之目录)和/tmp/目录,可以防止 php木马跨站,如果改了之后安装程序有问题(例如:织梦内容管理系统),可以注销此行,或者直接写上程序的目录/data/www.osyunwei.com/:/tmp/

:wq!  #保存退出

/etc/init.d/mysqld restart  #重启 MySql

/etc/init.d/httpd restart   #重启 Apche

 

测试篇

cd  /var/www/html

vi index.php   #输入下面内容

<?php

phpinfo();

?>

:wq!   #保存退出

在客户端浏览器输入服务器 IP地址,可以看到如下图所示相关的配置信息!

 

注意:apache 默认的程序目录是/var/www/html

权限设置:chown apache.apache -R /var/www/html

至此,CentOS 6.4 安装配置 LAMP 服务器(Apache+PHP5+MySQL)教程完成!

备注:上述教程偷学至互联网。 

 

标签: mysql apache CentOS LAMP PHP5

评论(1) 浏览(6532)

mysql insert插入语句性能优化

2013-10-27 寒川 网页编程

最近下载了一个2000多万的mssql数据库备份文件,然后用软件将其转为mysql数据库,转过来大约3个G左右,数据占用磁盘量不大,但是数据条数还是挺多的。而且因为是从mssql转过来的缘故,全都是text类型,且除了id意外,没任何索引。如果直接用php来查询这些数据,估计没几分钟甚至几十分钟的时间是查不出任何东西的。于是乎想到了mysql分表。分表的时候是采用hash按照某个字段分的,加之自己略懂一点php,于是乎我按照自己的想法写了一个php的分表小代码:读取n条记录,php处理好后分别插入个分表中。2000万的数据,可不是开玩笑滴,那家伙,一秒钟转存100条记录都要好几秒钟。经分析,读取记录还算比较快,但是插入貌似有点慢了。于是引出了博文标题,mysql insert查询语句性能优化。

    究竟如何对insert语句性能优化呢?百度了一下,在插入语句之前和之后分别加上“START TRANSACTION;”和“COMMIT;”,不含引号,问题就得以解决了。现在插入速度那是相当快,一次插入一两千条数据,跟玩似的。注:在“START TRANSACTION;”和“COMMIT;”之间的插入语句类似为:INSERT INTO `table` ( `id`, `content`) VALUES (null, 'content') ,(null, 'content'), (null, 'content');

标签: mysql insert插入 千万级

评论(0) 浏览(6887)

access数据库中时间转mysql时间戳

2013-10-22 寒川 计算机

    今天一朋友网站需要将asp转php程序。php程序都快完成了。请我将原access数据库转为mysql数据库。这数据库转换原本是很简单的事情,现有成熟的软件也挺多。我用的是Access2MySQL Pro 5.7.1。先将access中数据表调整为与现有网站的mysql数据库一致。然后直接开转。貌似一切很顺利。打开网站查看的时候,突然才发现时间不对。进mysql数据库一看,原来access中时间格式为2012-06-07 20:20:20,转换到mysql直接成了2012了。我了个去。才发现mysql中储存时间用的是int(10),难怪出错。这要如何是好呢?问题来了自然有解决办法。我的做法如下:

    将mysql的时间数据库时间字段直接修改为varchar(100),然后将数据库转换过来,转换完成后mysql的数据类似这样:2012-06-07 20:20:20,为了使用int(10)这样储存时间戳,还需要将时间字段更新一下,使用类似如下语句:

    update `table` set `t`= UNIX_TIMESTAMP(`t`);

    这样就将mysql中日期时间直接转换成了时间错,再修改mysql数据结构,将时间字段改成int(10),至此,access数据库中时间转mysql时间戳完成。

    最后,附带一句mysql替换部分关键词的语句:

    UPDATE `table` SET `f1`=REPLACE(`f1`, 'abc', 'def');

    此语句功能就不说了,与主题没任何关系,纯属记录。就这样吧,就这样了。

标签: mysql access 时间戳

评论(0) 浏览(6903)

又一个中秋佳节

2013-9-19 寒川 点滴心情

    今天特别百度了一下中秋节,百度百科解释:

    “中秋节又称月夕、秋节、仲秋节、八月节、八月会、追月节、玩月节、拜月节、女儿节或团圆节,是流行于中国众多民族与东亚诸国中的传统文化节日,时在农历八月十五;因其恰值三秋之半,故名,也有些地方将中秋节定在八月十六……”

    没有什么需要感概的,值得注意的是快到冬天了,远方的亲人朋友注意添加衣服啊!就这样吧。Over.

    

标签: 中秋

评论(2) 浏览(7666)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap