15053971836 注册 / 登录

apache伪静态文件

时间: 阅读:372
apache伪静态文件

最佳回答

無畏

無畏

2023-01-12 23:34:08

Apache伪静态配置方法有两种:
在网站根目录下添加文件,.htaccess,在此文件内写伪静态规则,使用它需要在apache配置文件http.conf中完成相应配置.具体配置方法网上很多,这里不再赘述.
而另一种是直接在httpd.conf中使用.这种方法性能高于前者。
应用场景
(1),采用.htaccess的场景
用户需要针对特定目录改变服务器的配置而又没有root权限的情况下,可以通过.htaccess文件实现。
如果服务器管理员不愿意频繁修改配置,则可 以允许用户通过.htaccess文件自己修改配置. 比如ISP,在同一个机器上运行了多个用户站点,希望用户可以自
己改变配置,便可以配置好apache,开启对.htaccess文件的支持即可.
(2),不采用.htaccess的场景
虽然上述步骤1可以实现,但一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件(http.conf)的段中,而且更高效。
(3)避免使用.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配置文件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

最新回答共有5条回答

  • 游客
    回复
    2023-01-13 02:02:21

    一个非常好的问题。我是工作多年的Web应用架构师,来回答一下这个问题。欢迎关注我,了解更多IT专业知识。


    要成为Java架构师,应该具备多方面的知识技能,特别重要的是,一定要有多个实际项目经验。


    1,架构师要有全栈技术能力

    Java是当前的主流开发语言,应用普遍,尤其是在电商系统、信息管理系统、企业应用开发等方面,搭配Spring Boot开发框架,基本上是垄断地位。

    拿Web服务开发为例,为了满足实际需求,Web项目功能和架构都日趋复杂:多层架构,数据中台,动静分离,集群化部署,自动化运维,等等。

    不同于一个Demo演示,用于商业、有价值的一个Web服务是功能全面的。

    1)数据库,免费开源的MySQL,收费的Oracle,其他主流数据库

    2)缓存系统,Redis,MongoDB以及其它的NoSQL数据库

    3)消息队列,常用的ActiveMQ,RocketMQ,RabbitMQ

    4)鉴权认证,Apache Shiro或者定制开发的框架

    5)异步任务调度,复杂应用使用Quartz,简单应用可使用Spring Schedule

    6)日志系统,常用ELK日志处理,分析报警

    7)服务监控,Actuator,ZooKeeper,Dubbo等微服务架构

    8)单元测试、质量保障,等等

    2,架构师应具有DevOps能力

    有运营价值的系统,运维工作非常重要。云服务已经是IT技术的核心,基于云服务的DevOps将开发和运维结合起来,架构师作为项目核心参与者,

  • 匿名用户
    回复
    2023-01-13 02:02:21

    谢谢邀请!

    对于架构师来说,即要掌握已有技术解决方案的应用场景、优点、缺点等内容,又要把握当前流行的技术趋势以及未来的发展方向,可以说架构师是一个压力比较大的岗位。

    现在软件研发企业对架构师的职责分工要求已经比较细化了,以前软件开发公司的架构师往往要参与核心技术的公关,而目前软件架构师的任务往往是专注于系统解决方案的设计、验证和应用。以前架构师与技术专家的岗位结合非常紧密,现在架构师与技术专家在很多企业已经进行了岗位分离,但是合作却依然非常紧密。

    对于Java程序员来说,要想成长为架构师往往需要具备以下几个基本的能力:

    第一:非常强的学习能力。对于程序员来说,需要较强的学习能力,而对于架构师来说,就需要非常强的学习能力了。架构师要接触大量的流行技术(阅读大量的文档),要对每个技术进行场景验证,这个工作量是非常大的,所以很多时候架构师需要技术专家的配合。

    第二:需要较强的设计能力。如果说流行技术是具体的设计元素的话,那么架构师的任务就需要把这些设计元素组合成一件艺术品。而设计的过程则需要对技术元素本身的深刻认知,这个认知可以是基于已有的开发经验,也可以是基于已有的案例(基于案例是趋势)。

    第三:有前瞻性。架构师在设计技术方案时往往需要一定的前瞻性,能够根据应用场景的发展趋势来进行方案的动态(可扩展)设计。

    对于架构师来说,交流能力和外语能力同样比较重要。所以,对于一名普通的Java程序员来说,要想成长为架构师,需要从多方面培养自己的能力。

    我做软件开发工作多年,目前也在带软件研发团队,也负责技术选型的具体工作,我会陆续在头条写一些关于软件开发方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

    如果有软件开发方面的问题,也可以咨询我。

    谢谢!

  • 临沂网站建设
    回复
    2023-01-13 02:02:21

    网站架构涉及许多技术,Java程序员想要学习进阶成为架构师,需具备与架构师相匹配的技术能力,这是前提和基础。本篇列举了架构师的必备技术能力,文末随附详细的架构师专题资料。

    一、计算机基础

    操作系统(推荐现代操作系统)编译原理计算机网络互联网协议TCP/IP(推荐《TCP/IP协议族》)HTTP1.1/2.0HTTPSOAauth 2.0REST

    二、集合框架(源码)

    ListArrayListLinkedListSet:HashSet、TreeSetMap:TreeMap、ConcurrentHashMapQueue:ConcurrentLinkedQueueStackCollection的synchronized等方法

    三、工具类

    Google guava(推荐)Apache common lang/BeanUtils/Collctions/IOJSONfastjsongsonjackson

    四、框架

    Spring:IOC、AOP、常用注解SpringMVCMybatisShiroNetty

    五、远程调用(RPC)

    rmiThriftDubbo(Dubbox)服务器治理,也可以作为微服务gRPC

    六、构建

    Maven:推荐《Maven实战》Gradle

    七、安全

    单项散列算法:MD5、SHA对称加密:DES非对称加密:RSA、HTTPS

    八、JVM

    Java虚拟机(Hotspot实现)类加载机制内存模型GC:回收算法、垃圾收集器调优工具:jstack、jmap、jconsole

    九、并发编程

    Executor框架Fork/joinhappen-before数据结构:ConcurrentHashMap线程池:参数设置、原理、拒绝策略线程状态Lock/synchronized原子操作类并发工具类:CountDownLatch、Semaphore、CyclicBarrier、ExchangerI

  • 無畏
    回复
    2023-01-13 01:01:11

    1,文件存档,静态化页面存在服务器,伪静态化调用数据库虚拟生成的(实际还是动态)
    2,性能优势,在用户访问量大的时候,静态页面比伪静态更具优势。
    3,安全性能,基本上差不多都是静态化状态
    4,实际适用,伪静态比静态化更灵活,部分没法静态化的,都可以伪静态化。
    静态网页就是,比如网站上放了一个neiyi.html文件,你想访问它就直接输入chaodiquan. com/neiyi.html。Web服务器看到这样的地址就直接找到这个文件输出给客户端。
    动态网页就是,假如你想做一个显示当前时间的页面,那么就可以写个PHP文件,然后访问chaodiquan. com/neiyi.php。Web服务器看到这样的地址,找到neiyi.php这个文件,会交给PHP执行后返回给客户端。而动态网页往往要输入参数,所以地址就变成chaodiquan. com/neyi.php?a=1&b=2。因为参数可以随便加,而返回内容却不变
    于是有了mod_rewrite,它可以重新映射地址。比如当前这个页面的地址question/20153311,Web服务器收到请求后会重新映射为question.php?n=20153311,然后再执行那个PHP程序。(以上网址均为假设)这样,在内部不改变的情况下,对外呈现出来的网址变成了没有问号的象静态网页的网址一样。
    于是有人给起了个名字叫“伪静态”。其实也没什么伪的,就是没有问号的静态网址,希望可以帮助到你的哈