投稿 评论 顶部

PHP利用htaccess文件实现伪静态

佚名 网络安全

伪静态是什么?

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

伪静态有什么用?

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

1、phpstudy开启rewrite_module

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

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

<Directory />    Options +Indexes +FollowSymLinks +ExecCGI    AllowOverride All    Order allow,deny    Allow from all    Require all granted</Directory>
<Directory "D:/software/php/PhpStudy2018/PHPTutorial/Apache/cgi-bin">    AllowOverride All    Options None    Require all granted</Directory>

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 onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d    RewriteCond $1 !^(index\.php|images|robots\.txt)RewriteRule ^(.*)$ /index.php/$1 [L]

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

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

?

?