Nice URLS PHP .htaccess

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
# http://www.xiaokyun.com/about -> http://www.xiaokyun.com/about.php

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
# http://www.xiaokyun.com/about -> http://www.xiaokyun.com/index.php?q=about

<?php
// $url_data is an array
$url_data = explode("/",$HTTP_SERVER_VARS[‘PATH_INFO’]);
?>

.htaccess 301跳转(裸域、WWW)

# Option 1: 把 “www.xiaokyun.com 转向裸域 xiaokyun.com”

#RewriteCond %{HTTPS} !=on
#RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
#RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Option 2: 把 “domain.com 转向 www.xiaokyun.com”

#RewriteCond %{HTTPS} !=on
#RewriteCond %{HTTP_HOST} !^www..+$ [NC]
#RewriteCond %{HTTP_HOST} (.+)$ [NC]
#RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

#common configuration

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^xiaokyun.com
RewriteRule ^(.*)$ http://www.xiaokyun.com/$1 [R=301,L]
</IfModule>

linux 多账户下实现Apache虚拟主机之间的相互隔离设置

合租了linux服务器,作为管理员以及和合租者都希望将自己的虚拟主机目录和别人的隔离(因为每个用户都有linux登录账户),这个问题起初也烦恼我很久,不过很快我就有了解决办法。

1.假设 有两个站点 siteA 和 siteB(假设这两个站点的目录在/var/www/下)
2.使用root账户登录终端建立两个帐号 userA 和 userB, 要满足使用userA登录时候只能有权限进入siteA目录,登录siteB只能进入siteB目录

useradd userA
useradd userB

3.linux 在新建账户的时候如果没有为此帐号分配组,则默认会建立以该帐号同名的组,于是上面就自动产生了userA 和 userB组
4.然后将siteA 和 siteB这两个目录的所属

cd /var/www
chgrp userA siteA/ #注意这里的userA是同名的组名非帐户
chgrp userB siteB/

5.然后修改两个目录的访问权限,只能同一个组可有访问和修改

chmod 755 siteA/ #755的权限就是文件的创建者和所属组可有读取,写入
chmod 755 siteB/

6.此时我们就实现了不同的用户组账户进入对应的目录的权限,但是此时Apache没有读取这两个目录的权限,因为Apache不属于上述任何组
7.启动Apache的默认账户一般是 apache (如果没有建立一个)
8.如果将Apache账户 分别加入 userA 和 userB组,那么apache 就有权限可有访问到这两个目录了

gpasswd -a apache userA #将apache账户分别加入 userA组和 userB组
gpasswd -a apache userB
service httpd restart

原文:http://blog.css-js.com/linux/linux-centos-apache-dirset.html