PHP利用htaccess文件实现伪静态

伪静态是什么?

伪静态就是:动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。

伪静态有什么用?

主要是站长们为了增加搜索引擎的友好度,方便网站内容被搜索引擎收录而诞生的

1、phpstudy开启rewrite_module

1:phpStudy其他选项菜单——>php扩展及设置——>apache模块——>rewrite_module 勾选

:2:修改一下apache的httpd.conf文件中 AllowOverride None 改为: AllowOverride All  两处都改。


    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted

    AllowOverride All
    Options None
    Require all granted

3:重启Apache,修改成功!

2、.htaccess 文件详解

.htaccess是什么

.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录

.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

htaccess语法参考:http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html

【注】phpstudy启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:“No input file specified.”

首先看一下规则的写法:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

而提示是说:“No input file specified.”,也就是说没有得到有效的文件路径,在正则结果“$1”前面多加了一个“?”号,问题也就随之解决了。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php?/$1 [L]

 

 

你可能感兴趣的:(PHP,php)