返回列表 发帖

achwindows环境下Apache伪静态实现

1、首先确认你已经开启服务器的路由重写模块,如果不确认,请在httpd.conf文件中查找如下代码,并将前面的#符号删除,重启服务器,即开启了重写模块
LoadModule rewrite_module modules/mod_rewrite.so

2、建立虚拟主机,如果未设置虚拟主机,请查看我上一篇日志
  1. <VirtualHost 127.0.0.1>
  2. DocumentRoot "E:/Server/apache2.2/htdocs/zend_places/public/"
  3. ServerName zend_places.com
  4. DirectoryIndex index.php
  5. <Directory "E:/Server/apache2.2/htdocs/zend_places/public/">
  6.     AllowOverride All
  7.     Allow from All
  8. </Directory>
  9. </VirtualHost>
复制代码
请注意代码
AllowOverride All#这行代码为URL重写的关键命令。
Allow from All
其他你根据实际情况设置,然后重启服务器

3、在zend_places/public文件夹下新建 .htaccess文件,添加如下代码
  1. # Zend Framework rewrite规则
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_FILENAME} !-f#这里将除了实际文件以为的所有其他请求都指向下行代码给出的脚本,这里是index.php
  4. RewriteRule .* index.php
  5. 在windows下无法直接创建 .htaccess文件,请注意前面有“点号”。可以借助PHP实现
  6. 在public文件夹下创建文件foundFile.php,代码如下
  7. <?php
  8. $handle = fopen(".htaccess","w+");
  9. if($handle)
  10. {
  11.     echo "文件创建成功";
  12. }
  13. ?>
复制代码
通过浏览器访问这个脚本,如果输出文件创建成功,则说明在public下成功创建 .htaccess文件!

4、编写E:/Server/apache2.2/htdocs/zend_places/public/下的index.php文件,代码如下
  1. <?php
  2. echo "you did it<br/>";
  3. echo "you came from URL ".$_SERVER['REDIRECT_URL'];
  4. ?>
复制代码
通过浏览器访问zend_places.com/将访问到该index.php,并输出you did it
通过浏览器访问zend_places.com/index.html将访问到该index.php,并输出
you did it
/index.html
可能不少朋友看到这里会问,这个跟伪静态没关系啊?不急,我再说明一下,伪静态无非是将URL变化下,比如,我要访问zend_places.com/index.php?id=5,变成访问zend_places.com/id/5或者zend_places.com/id-5.html,这些都可以,你在index.php脚本里,可以通过$_SERVER['REDIRECT_URL']得到这个用户访问的地址,比如上面两个例子得到/id/5,/id-5.html,然后你就可以再index.php里做相应处理和解析,并因为你已经有办法得到id=5了!

返回列表