Apache中的.htaccess(或者”分布式配置”了针对目录改变配置的方法,
即,在特定的文档目录中放置包含或多个指令的,以作用于此目录及其子目录。作为,所能的命令受到限制。***Apache的AllowOverride指令来设置。 子目录中的指令会笼盖更高级目录或者主器配置中的指令。 .htaccess必需以ASCII模式上传,最好将其权限设置为644。 打开httpd.conf(在那里? APACHE目录的CONF目录里面),用文本编纂器打开后,查找 (1) Options FollowSymLinks AllowOverride None 改为 Options FollowSymLinksAllowOverride All
(2)去掉下面的注释 LoadModule rewrite_module modules/mod_rewrite.so (3)修改此处 <FilesMatch "^\.ht"> Order allow,deny Deny from all Allow from All </FilesMatch> 就好了
1. 定制目录的 Index 文件
DirectoryIndex index.html index.php index.htm2. 自定义错误页
ErrorDocument 404 errors/404.html
3. 控制访问文件和目录的级别
.htaccess 经常用来限制和拒绝访问某个文件和目录,例如我们有一个 includes 文件夹,这里存放一些脚本,我们不希望用户直接访问这个文件夹,那么通过下面的脚本可以实现:
# no one gets in here!
deny from all上述脚本是拒绝所有的访问,你也可以根据IP段来拒绝:
# no nasty crackers in here!
order deny,allow deny from all allow from 192.168.0.0/24 # this would do the same thing.. #allow from 192.168.0一般这些方法是通过防火墙来处理,但在一个生产环境中的服务器来说,这样的调整非常方便。
有时候你只是想禁止某个ip访问:
# someone else giving the ruskies a bad name..
order allow,deny deny from 83.222.23.219 allow from all5. 301 重定向
如果你希望某个页面跳转到新的页面: Redirect 301 /old/file.html http://yourdomain.com/new/file.html 下面可以实现对整个路径的重定向 RedirectMatch 301 /blog(.*) http://yourdomain.com/$1
9. URL 重写
例如要将 product.php?id=12 重写为 product-12.html RewriteEngine on RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1将 product.php?id=12 重写为 product/ipod-nano/12.html
RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2重定向没有 www 到有 www 的 URL 地址:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^viralpatel\.net$ RewriteRule (.*) http://www.viralpatel.net/$1 [R=301,L]重写 yoursite.com/user.php?username=xyz 到 yoursite.com/xyz
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1 RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1重定向某个域名到一个 public_html 里新的子文件夹:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.test\.com$ RewriteCond %{REQUEST_URI} !^/new/ RewriteRule (.*) /new/$1