在apache上.htaccess转向,只要apache编译的时候指明支持rewrite模块即可。
但是换到nginx上方法会有不同,有人说把.htaccess转向规则写到nginx的配置文件里面,官方提供的方法之一,肯定可行的。
解决方法: 举个例子,要把www.it.net.cn的.htaccess迁移到nginx上,几个步骤: 第一步:修改.htaccess文件,因为apache的rewrite转向规则跟nginx的转向规则还是有一些不一样的,典型的不一样有nginx的根目录需要写在每行转向的地址前,每行规则必须以分号(;)结束,301或者404等跳转使用不同的格式。
apache上htaccess转换到nginx上:
复制代码代码示例:
RewriteEngine On
RewriteBase / RewriteRule ^show-([0-9]+)-([0-9]+)\.html$ index.php?action=show&id=$1&page=$2 RewriteRule ^category-([0-9]+)-([0-9]+)\.html$ index.php?action=index&cid=$1&page=$2 RewriteRule ^archives-([0-9]+)-([0-9]+)\.html$ index.php?action=index&setdate=$1&page=$2 RewriteRule ^(archives|search|reg|login|index|links)\.html$ index.php?action=$1 RewriteRule ^(comments|tagslist|trackbacks|index)-([0-9]+)\.html$ index.php?action=$1&page=$2 rewriteCond %{http_host} ^it.net.cn [NC] rewriteRule ^(.*)$ http://www.it.net.cn/$1 [R=301,L] ErrorDocument 404 http://www.it.net.cn/
转换成nginx的规则
复制代码代码示例:
rewrite ^/show-([0-9]+)-([0-9]+)\.html$ /index.php?action=show&id=$1&page=$2;
rewrite ^/category-([0-9]+)-([0-9]+)\.html$ /index.php?action=index&cid=$1&page=$2; rewrite ^/archives-([0-9]+)-([0-9]+)\.html$ /index.php?action=index&setdate=$1&page=$2; rewrite ^/(archives|search|reg|login|index|links)\.html$ /index.php?action=$1; rewrite ^/(comments|tagslist|trackbacks|index)-([0-9]+)\.html$ /index.php?action=$1&page=$2; if ($host != 'www.it.net.cn' ) { rewrite ^/(.*)$ http://www.it.net.cn/$1 permanent; } error_page 404 http://www.it.net.cn/;
第二步:修改nginx的配置文件,增加include该.htaccess文件
复制代码代码示例:
include /var/www/www.it.net.cn/.htaccess
修改为相应的地址。
第三步:测试并重启
复制代码代码示例:
/etc/init.d/nginx -configtest
重启生效:
复制代码代码示例:
/etc/init.d/nginx restart
(责任编辑:IT) |