开发者社区> 问答> 正文

apache 重定向301和错误页面404和502等

开启mod_rewrite后(.htaccess文件)

1)将不带www的域名转向到带www的域名下

复制代码

  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteCond %{HTTP_HOST} ^phpwind.me [NC]
  4. RewriteRule ^(.*)$ $1 [L,R=301]

2)重定向到新域名

复制代码
  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteRule ^(.*)$ $1 [L,R=301]
3)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
将read.php?tid=2这样的地址转向到read-tid-htm-2.html

Apache下vhosts.conf中配置301重定向
为实现URL规范化,SEO通常将不带www的域名转向到带www域名,vhosts.conf中配置为:

复制代码
  1. <VirtualHost *:80>
  2. ServerName DocumentRoot /home/www
  3. </VirtualHost>
  4. <VirtualHost *:80>
  5. ServerName phpwind.me
  6. RedirectMatch permanent ^/(.*) $1
  7. </VirtualHost>
Apache下除了以上2种方法,还有其他配置方法和可选参数,建议阅读Apache文档。


实例


在apache中我们要把phpwind.com跳转到 www.phpwind.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^phpwind.com [NC]
RewriteRule ^(.*)$ http://www.phpwind.com [L,R=301]

展开
收起
liguohui 2011-09-02 00:29:59 11669 0
2 条回答
写回答
取消 提交回答
  • 用.htaccess不行吗
    2011-09-02 08:59:23
    赞同 展开评论 打赏
  • 首先找到apache的配置文件
    一般是httpd.conf
    里面尝试找下有没你需要设置的站点的域名
    有就在

    复制代码

        <VirtualHost *:80>
        ServerAdmin webmaster@ www.xxx.cn
        DocumentRoot /var/www/html/xxx
        ServerName www.xxx.cn
        ServerAlias xxx.cn
        ErrorLog logs/www.xxx.cn-error_log
        CustomLog logs/www.xxx.cn-access_log common
        </VirtualHost>



    里面加上
    复制代码

        <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
        RewriteRule ^(.*)/simple/([a-z0-9\_]+\.html)$ $1/simple/index.php?$2
        </IfModule>


    修改后变成
    复制代码

        <VirtualHost *:80>
        ServerAdmin webmaster@ www.xxx.cn
        DocumentRoot /var/www/html/xxx_witkey
        ServerName www.xxx.cn
        ServerAlias xxx.cn <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
        RewriteRule ^(.*)/simple/([a-z0-9\_]+\.html)$ $1/simple/index.php?$2
        </IfModule> ErrorLog logs/www.xxx.cn-error_log
        CustomLog logs/www.xxx.cn-access_log common
        </VirtualHost>


    当然如果这个配置文件里面找不到站点地址
    就说明他设的虚拟路径,一般配置文件里面会找到这句话
    Include conf.d/*.conf
    打开
    /etc/httpd/conf.d
    下的
    vhost.conf
    同理也在
    <VirtualHost *:80>
    里面加哦
    由于是rpm包安装的,启动方法
    /etc/init.d/httpd restart
    然后就成功啦!


    如果想支持.htaccess,打开httpd.conf
    LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉;所有AllowOverride None都改成AllowOverride All试试
    2011-09-02 00:30:54
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像