apache 伪静态测试使用
程序员文章站
2022-05-25 18:34:15
...
在学习apache或使用PHP处理伪静态前得先了解伪静态的特点和优点,去了...
述:看了一些文章伪静态无非就是可以让搜索引擎更好的收录。其实不论是真的还是伪的,其实对于搜索引擎来说
都是一样的,搜索引擎没有说,你这个是伪的,我不收录你.揪根掘底的来说,为什么搜索引擎会不收录带问号的网址
?因为搜索引擎怕由于问号而进入死循环(以前动网就有这样一个漏洞,蜘蛛进去出不来了),所以很多时候带问号的
地址是不会进去的,伪静态对于搜索引擎来说,其实就是静态,因为地址中没有带问号,所以没有真静态比伪静态收
录得多的说法.
首先当然是配置文件
第一步:要找到apache安装目录下的httpd.conf文件,在当中找到:
<Directory />
Options FollowSymLinks
AllowOverride none
</Directory>
将none改all,AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允
许在.htaccess中使用,那么在本手册的说明中,此指令会有一个覆盖项段,其中说明了为使此指令生效而必须在
AllowOverride指令中设置的值。
<Directory 目录>这的目录应与DocumentRoot中的目录相同
第二步:找到以下内容
#LoadModule rewrite_module modules/mod_rewrite.so
将#号去掉,可使用httpd 应用程序查看rewrite_module模块是否载入(httpd -M)
OK配置成功,保存重启apache
测试基于.htaccess文件的功能:
在这我使用的的ErrorDocument 404 /error.php 进行测试。
[测试当中并没有出现想要的结果,而后我去查看error.log日志,当中显示的是以根目录/error.php的
地址,这也说明了配置成功。在根目录中新建error.php文件->测试时也没有成功的转向到error.php页面,配置
成功却没有转向是目录的问题??使用绝对地址http://www.****.com/error.php行了]
使用.htaccess文件的不足:
1、性能 AllowOverride启用了使用.htaccess文件,则apache需要在每个目录中查找.htaccess文件。因此会导致
性能下降。另外对每一个请求,都需要读取一次.htaccess文件,还有 apache必须在所有上级的目录中查
找.htaccess文件以使有效的指令都起作用,比如如果客户端请求/www/htdocs/help中的页面。服务器必须查找
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/help/.htaccess
四个额外文件(即使这些文件都不存在,当然你可以仅仅允许根目录使用.htaccess文件),也就是说目录深度越
深,则访问的额外文件越多,性能越低了。
2、安全
由于在/www/htdocs/help下面的.htaccess文件中放置指令与在主配置文件中<Directory /www/htdocs/help>中放
置相同的指令是完全等效的,这样允许用户自己修改服务器配置,
可能就会导致某些不愿意发生的意想不到的修改,这样就会造成服务器安全问题。这样你就必须考虑是否设置
AllowOverride None来完全禁用.htaccess文件。
使用:URL重写(简单)
RewriteEngine on
RewriteBase /
RewriteRule ^tt_([0-9]*).html$ test.php?id=$1 [R]
释: RewriteEngine ,这是打开或关闭运行时的重写引擎
RewriteBase / ,这是设置指定路径的基准URL也就是[/test.php?id=$1]这样的
RewriteRule ,为重写引擎定义重写规则
注:我在使用时误解了RewriteBase的意思,以为在RewriteBule中的路径都是以/开始的,其实不然,在apache中
开启伪静态运行时,都会试图在不同的目录寻找.htaccess文件运行当中的规则。所以URL都是以.htaccess为基准
的。
如.htaccess放在根目录中伪静态是www.***.com/tt_11.html运行的,而被从写的URL是以RewriteBace为基准的
如.htaccess放在/user目录中伪静态是www.***.com/user/tt_11.html运行的
述:Rewrite apache重写技术的使用就不详说了,当然在使用前必须要会使用正则表达式,了解apache的基本配置
,从写规则可从apache参考手册学习,我也是从那里着手的。
述:看了一些文章伪静态无非就是可以让搜索引擎更好的收录。其实不论是真的还是伪的,其实对于搜索引擎来说
都是一样的,搜索引擎没有说,你这个是伪的,我不收录你.揪根掘底的来说,为什么搜索引擎会不收录带问号的网址
?因为搜索引擎怕由于问号而进入死循环(以前动网就有这样一个漏洞,蜘蛛进去出不来了),所以很多时候带问号的
地址是不会进去的,伪静态对于搜索引擎来说,其实就是静态,因为地址中没有带问号,所以没有真静态比伪静态收
录得多的说法.
首先当然是配置文件
第一步:要找到apache安装目录下的httpd.conf文件,在当中找到:
<Directory />
Options FollowSymLinks
AllowOverride none
</Directory>
将none改all,AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允
许在.htaccess中使用,那么在本手册的说明中,此指令会有一个覆盖项段,其中说明了为使此指令生效而必须在
AllowOverride指令中设置的值。
<Directory 目录>这的目录应与DocumentRoot中的目录相同
第二步:找到以下内容
#LoadModule rewrite_module modules/mod_rewrite.so
将#号去掉,可使用httpd 应用程序查看rewrite_module模块是否载入(httpd -M)
OK配置成功,保存重启apache
测试基于.htaccess文件的功能:
在这我使用的的ErrorDocument 404 /error.php 进行测试。
[测试当中并没有出现想要的结果,而后我去查看error.log日志,当中显示的是以根目录/error.php的
地址,这也说明了配置成功。在根目录中新建error.php文件->测试时也没有成功的转向到error.php页面,配置
成功却没有转向是目录的问题??使用绝对地址http://www.****.com/error.php行了]
使用.htaccess文件的不足:
1、性能 AllowOverride启用了使用.htaccess文件,则apache需要在每个目录中查找.htaccess文件。因此会导致
性能下降。另外对每一个请求,都需要读取一次.htaccess文件,还有 apache必须在所有上级的目录中查
找.htaccess文件以使有效的指令都起作用,比如如果客户端请求/www/htdocs/help中的页面。服务器必须查找
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/help/.htaccess
四个额外文件(即使这些文件都不存在,当然你可以仅仅允许根目录使用.htaccess文件),也就是说目录深度越
深,则访问的额外文件越多,性能越低了。
2、安全
由于在/www/htdocs/help下面的.htaccess文件中放置指令与在主配置文件中<Directory /www/htdocs/help>中放
置相同的指令是完全等效的,这样允许用户自己修改服务器配置,
可能就会导致某些不愿意发生的意想不到的修改,这样就会造成服务器安全问题。这样你就必须考虑是否设置
AllowOverride None来完全禁用.htaccess文件。
使用:URL重写(简单)
RewriteEngine on
RewriteBase /
RewriteRule ^tt_([0-9]*).html$ test.php?id=$1 [R]
释: RewriteEngine ,这是打开或关闭运行时的重写引擎
RewriteBase / ,这是设置指定路径的基准URL也就是[/test.php?id=$1]这样的
RewriteRule ,为重写引擎定义重写规则
注:我在使用时误解了RewriteBase的意思,以为在RewriteBule中的路径都是以/开始的,其实不然,在apache中
开启伪静态运行时,都会试图在不同的目录寻找.htaccess文件运行当中的规则。所以URL都是以.htaccess为基准
的。
如.htaccess放在根目录中伪静态是www.***.com/tt_11.html运行的,而被从写的URL是以RewriteBace为基准的
如.htaccess放在/user目录中伪静态是www.***.com/user/tt_11.html运行的
述:Rewrite apache重写技术的使用就不详说了,当然在使用前必须要会使用正则表达式,了解apache的基本配置
,从写规则可从apache参考手册学习,我也是从那里着手的。