Apache在httpd.conf配置文件中设置伪静态(Rewrite)

.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可 以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。
虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。
避免使用.htaccess文件有两个主要原因。
首先是性能。如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。
还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用,所以,如果请求/www/htdocs/example中的页面,Apache必须查找以下文件:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

总共要访问4个额外的文件,即使这些文件都不存在。(注意,这可能仅仅由于允许根目录”/”使用.htaccess ,虽然这种情况并不多。)
其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。但是,如果给予用户较少 的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值,并引导他 们参阅相应的说明,以免日后生出许多麻烦。

注意,在/www/htdocs/example目录下的.htaccess文件中放置指令,与在主配置文件中段中放置相同指令,是完全等效的。
由上我们可以知道,使用.htaccess文件具有性能上的不利之处,所以我们应该尽可能避免使用.htaccess文件,下面介绍一种不使用.htaccess文件进行伪静态的方法:

Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:
LoadModule rewrite_module     libexec/mod_rewrite.so
AddModule mod_rewrite.c

Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:
LoadModule rewrite_module     modules/mod_rewrite.so

如果存在,且以#开头,请删除#。然后在配置文件(通常就是 conf/httpd.conf或者conf/extra/httpd-vhosts.conf)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 中去,如果加在虚拟主机配置外部将可能无法使用。改好后然后将 Apache 重启。

①.在apache%C5%E4%D6%C3/" target="_blank">apache配置文件httpd.conf中找到:

 代码如下 复制代码

LoadModule rewrite_module modules/mod_rewrite.so

这句,去掉前边的注释符号“#”,如果没有则添加这句。
②.在代码:

 代码如下 复制代码

Options FollowSymLinks
AllowOverride None

下面添加伪静态代码(以Wordpress伪静态为例):

 代码如下 复制代码

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

其中/usr/local/apache/htdocs/wwwtest即为要进行伪静态的网站的根目录

③.重启apache

时间: 2024-10-18 11:59:31

Apache在httpd.conf配置文件中设置伪静态(Rewrite)的相关文章

apache检测httpd.conf 配置文件错误行语句

,命令如下:  代码如下 复制代码  httpd.exe -w -n "Apache2" -k start linux下的apache启动.停止命令:  代码如下 复制代码 1 /etc/init.d/apache2 start   /etc/init.d/apache2 stop 某些情况下service apache2 restart不好用时,可以尝试下这2种方法  

Apache003_ httpd.conf配置文件

ServerRoot "/usr/local" ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下. ScoreBoardFile /var/run/httpd.scoreboard httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apach

Apache 的 httpd.conf 中文详解_Linux

ServerRoot "/usr/local" ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下. ScoreBoardFile /var/run/httpd.scoreboard httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个 Apac

Apache的httpd.conf文件常用指令解释

apache Apache的httpd.conf文件常用指令解释 ServerType standalone #设置服务器的形式是单独启动(standalone),还是借由互联网络伺服程序inetd来启动.一般使用前者. ServerRoot "/usr/local/apache" #设置服务器的Home目录,用来存放服务器的设置文件.错误文件.记录文件. PidFile logs/httpd.pid #程序启动时,把父进程httpd的进程号(process id)存在这个文件中.这个

redis.conf 配置文件 中 daemonize 守护线程

问题描述 redis.conf 配置文件 中 daemonize 守护线程 在学习redis的过程中,看到介绍redis的配置文件redis.conf中 daemonize 可以用来指定redis 是否要用守护线程的方式启动. 请问redis 的守护线程启动和非守护线程启动 有什么启动 ps:目前在测试的时候是使用screen 启动,启动成功后退出screen, 暂时不明白redis 中关于守护线程的问题. 解决方案 就是普通命令方式启动daemonize,它也会是守护进程,也就是达到scree

Apache 的 httpd.conf 详解(很实用)

ServerRoot "/usr/local" ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下. ScoreBoardFile /var/run/httpd.scoreboard httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apach

httpd.conf 二级域名设置方法_Linux

之后,在 httpd.conf 的最后,添加以下内容: 复制代码 代码如下: RewriteEngine on RewriteMap lowercase int:tolower RewriteMap vhost txt:/usr/local/etc/apache/vhost.map RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ RewriteCond ${vhost:%1} ^(/.*)$ RewriteRule ^/(.*)$ %1/$1 其中的

apache中httpd.conf的中文件详解

ServerRoot /Apache#可以用绝对路径 e:webapache#ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下.PidFile logs/httpd.pid#PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它

WinForm中我在配置文件中设置另一个配置文件,路径怎么写

问题描述 我像获取config文件夹下的dao.config......这个路径是错误的,求写法~<appSettings><addkey="DaoFile"value="|ListDictionary|configdao.config"/><addkey="ClientSettingsProvider.ServiceUri"value=""/></appSettings> 解决