1、如何在Apache开启Rewrite环境
ubuntu如何开启Rewrite模块
在终端输入:
sudo a2enmod rewrite 开启Rewrite模块(停用模块,使用 a2dismod)
sudo gedit /etc/apache2/sites-available/default 修改下面的地方
<Directory />
Options FollowSymLinks
AllowOverride None(修改为AllowOverride All)
</Directory>
<Directory "/var/orioner">
Options Indexes FollowSymLinks MultiViews
AllowOverride None(修改为AllowOverride All)
Order allow,deny
allow from all
</Directory>
最后sudo /etc/init.d/apache2 restart。
----------------------------------------------------
在网站下面建立.htaccess文件
修改.htaccess文件属性 chmod -R 777 .htaccess
Windows如何开启Rewrite模块
环境:
系统 Windows
Apache 2.2
加载Rewrite模块:
在conf目录下httpd.conf中找到
LoadMole rewrite_mole moles/mod_rewrite.so
这句,去掉前边的注释符号“#”,或添加这句。
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
在Windows系统下不能直接建立“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。
CentOs开启Apache的rewrite_mole
centos的配置文件放在: /etc/httpd/conf/httpd.conf
打开文件找到:
LoadMole rewrite_mole moles/mod_rewrite.so
将前面"#"去掉,如果不存在则添加上句。
如果你的网站是根目录的话:找到
代码如下
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
将上面的None改为All
如果你的站点不在根目录,设置如下:
代码如下
<Directory "/var/www/html/my_directory">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
OK,然后重启服务器,service httpd restart ,这样.htaccess就可以使用了。
出自:http://www.111cn.net/phper/apache/54086.htm
2、Apache .htaccess 设置域名重定向
可以在htaccess文件中添加下面的代码,当访问abc.com的时候会重定向到www.abc.com,当然也可以设置重定向到其它的域名。
<IfMole mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]
RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]
</IfMole>
3、apache rewrite域名不变
隐性URL转发吧, rewite跳转过去的,域名显示会变
4、使用apache 的.htaccess 方式实现rewrite,目的实现一空间多个域名的网站,不同域名使用不同目录。
也是叫这个,nginx 与 apache 的 rewrite 基本上没什么区别,甚至可以拿来直接用。
Nginx的Rewrite
经过网上查阅和测试,发现Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用。比如在Apache中这样写规则
rewrite ^/([0-9]).html$ /viewthread.php?tid=$1 last;
而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号:
rewrite "^/([0-9]).html$" /viewthread.php?tid=$1 last;
同时将RewriteRule为Rewrite,基本就实现了Nginx的Rewrite规则到Apache的Rewite规则的转换。
Rewrite的Flags
last - 基本上都用这个Flag。
break - 中止Rewirte,不在继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301
官方文档请点击这里,另外如果对于302,301这些状态有疑问的,可以参考《301 Redirect 永久重定向的实现》
如果需要对Nginx配置防盗链的话,可以参考《Nginx的防盗链配置》
Discuz!在Nginx下的Rewrite
需要说明的是,下网上以前一直流传的Rewrite都是有误的。
下面的Rewrite中百分号前面多了个转移字符“\”,这在Apache中是需要的,而在Nginx中则是不需要的。
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2 last;
正确的应该是
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
这个错误在基本上目前所有使用Nginx作为服务器,并且开启了Rewrite的网站上存在。包括Discuz!官方,目前已经给cnteacher反馈了。
完整正确的Discuz!在Nginx下的Rewrite如下:
rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
break;
5、你好,向您咨询一下apache rewrite 二级域名加二级目录的相关问题,期望您能恢复。
不知道你说的是哪一个帖子。
6、怎么配置apache让网站域名www或者有二级域名。
空间的站点需要登录空间控制面板操作,跟客户端电脑基本没有关系。
相关操作具体可以咨询空间提供商。
7、Apache Rewrite url重定向功能的配置成功,但是在浏览器上改却不行,说没有这个文件,不是应该直接跳转
Apache服务器实现301 重定向
确保你主机提供商的Apache Rewrite Mole组件已经打开,这是实现301重定向功能的必要前提。多数情况下,这个组件未被激活,只要点击激活就可以。进入服务器上的httpd.conf文件,那么你就可以自行激活这些组件了。打开httpd.conf文件,若出现错误,请在错误处返回,忽略下面这一行信息:LoadMole rewrite_mole moles/mod_rewrite.so
然后保存文件,重启服务器,按照下列步骤进行
从你网站的原文件夹中找出httpd.conf文件,将它下载到你机器中某个可以编辑该文件的文件夹中。
复制httpd.conf文件,保存到安全的地方—但不要编辑这个复制文件;需要旧版本httpd.conf文件时,以供使用;
打开下载在写字板中的原httpd.conf文件
将下面代码添加到httpd.conf文件中。用你自己网站的域名信息代替“183.1.2.3”,注意不要更改其他地方。RewriteEngine On
RewriteCond %{HTTP_HOST} ^183.1.2.3
RewriteRule (.*) http://183.1.2.3/$1 [R=301,L]
将更改的httpd.conf文件上传到从你网站上下载它的原位置
上传完成后,打开浏览器,访问你网站的“183.1.2.3”的那个地址。如果.htaccess文件执行任务的话,浏览器的地址栏中会立即显示出你的“183.1.2.3”的这个域名,那么你已经被重定向到这个地址上了
8、请教apache rewrite设定到目录
RewriteRule ^/$ /program/man
9、如何配置Apache的Rewrite规则实现二级域名的转化
^RewriteEngine on
rewritecond %{http_host} ^abc.ideasbulb.com [nc]
rewriterule ^(.*).ideasbulb.com(.*)$ ideasbulb.com/$1$2 [r=301,nc]