标签 Apache 下的文章

Rewrite重写时的优先级问题

现象:
把apache换成了nginx后,发现网站的播放页面明明生成了静态html文件,可是访问的确是伪静态文件(静态和伪静态路径一样)。

解决方法:

1、apache
在.htacess 文件中第二行增加:

RewriteCond %{REQUEST_FILENAME} !-f

其它常用的参数:

-d 是否是一个目录

-f 是否是一个文件

-s 是否是一个正常的有大小的文件

-l 是否是一个快捷方式

-x 是否是一个具有执行权限的文件

-F 检查TestString是还是是一个合法的文件

-U 检查TestString是否是一个合法的URL

2、nginx

if (!-f $request_filename){
rewrite ^/(.*)/(.*)/(.*)-(.*)$ /index.php?s=/vod-play-id-$2-sid-$3-pid-$4-listname-$1;
}

判断文件存在则优先访问文件,不存在则访问rewrite路径

Linux time_wait 过多的解决方法

今天在查看服务器负载时发现time_wait 非常的高

# netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
      1 established)
      1 State
      6 CLOSING
     11 LAST_ACK
     18 LISTEN
     19 FIN_WAIT1
     36 SYN_RECV
    205 FIN_WAIT2
    296 ESTABLISHED
   7202 TIME_WAIT

解决方法:

1、编辑 /etc/sysctl.conf 文件:

net.ipv4.tcp_syncookies = 1
#开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭

net.ipv4.tcp_tw_reuse = 1
#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭

net.ipv4.tcp_tw_recycle = 1
#开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

net.ipv4.tcp_fin_timeout = 30
#修改系统默认的 TIMEOUT 时间

然后执行

/sbin/sysctl -p

使修改生效。

- 阅读剩余部分 -

apache环境.htaccess文件无效的解决方法

编辑httpd.conf文件
找到 :

#LoadModule rewrite_module modules/mod_rewrite.so

将前面的”#”去掉以启用rewrite模块。

找到:

AllowOverride None

更改为:

AllowOverride All

然后重启apache使之生效

301重定向详解

IIS的301永久重定向设置如下图
620e13b9efbc4ed3895733a40c1916fd.jpg
IIS重定向参数
  1、$S-将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。如果未设置EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
  2、$P-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,不包括问号 (?)。
  3、$Q-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。
  4、$V-传递请求的 URL,不包括服务器名和任何参数。要包含参数,可使用 $P 或 $Q 变量及 $V 变量。如果未设置EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。

- 阅读剩余部分 -