Rewrite mod,apache的一个模块。我们最早开始使用是为了能够完成伪静态,后来发现在站点地址的重构上也有很多帮助。但是一直搞得我头晕的却不是技术本身,而是每次更换不同的服务器后,不同的服务器环境对rewrite规则的影响。
太多的时候,总是寄希望于服务器配置人员的水平以及合理化的配置。事实是,还是不太一样的。
简单的说,规则配置可以放在apache的配置文件里或者目录下的.htdaccess里面。在同一台服务器上的这两个不同的文件中,规则的书写没有什么不同;即使在同一文件,但不同的服务器上,可能所不同的。
今天遇上的问题,也就是本站遇到的问题,先看看在本地开发时的代码:
<pre class="brush:php;"> RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|images|robots\.txt|(.*)\.html|uploads)
RewriteRule ^(.*)$ index.php/$1 [L]
```
<p>
</p>
<p>
上传到服务器上,发现无法使用,服务器环境apache FastCGI模式。多次尝试之后,目前的代码:</p>
<pre class="brush:php;"> RewriteEngine on
RewriteRule ^blog/(.*)$ index.php/blog/$1
```
<p>
</p>
<p>
Ps:</p>
<ol><li>
修改之后的代码,可以看到RewriteRule后面的'blog/',目前看就是这里影响了规则。由于受到空间环境的限制,无法使用rewrite log进行更详细的调试。</li>
<li>
在线空间,四博互联(<a href="http://www.4bo.cn" target="_blank">www.4bo.cn</a>) PHP MySql空间。</li>
</ol>
mod rewite apache 错误