thinkphp apache环境多条rewrite地址重写问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp apache环境多条rewrite地址重写问题相关的知识,希望对你有一定的参考价值。

.htaccess 规则
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
URL_MODEL模式为2,
加上下面这条规则后站点出现问题
RewriteRule ^index_([a-z0-9\-]+\.html)$ index.php/Index/Index/display_content/id/$1 [NC]
目的:index.php/Index/Index/display_content/id/参数 重写为 index_参数.html 其他不变

参考技术A RewriteRule ^(.*)/index_([a-z0-9\-]+\.html)$ $1/ index.php/Index/Index/display_content/id/$1 [NC]追问

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

ThinkPHP去掉URL中的index.php

1,先确认你有没mod_rewrite.so模块

/usr/lib/apache2/modules/mod_rewrite.so

然后在httpd.conf最后一行加上(我不加也行,自己都奇怪)

LoadModule rewrite_module modules/mod_rewrite.so

重启
/etc/init.d/apache2 restart

2,将/etc/apache2/sites-enabled/000-default中的

AllowOverride None 将None改为 All

3,将TP的conf配置文件里写 ‘URL_MODEL‘ => ‘2‘(开启REWRITE模式)

4,.htaccess文件必须放到项目根目录下,在文件里面添加

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

  最后重启apache即可

 

以上是关于thinkphp apache环境多条rewrite地址重写问题的主要内容,如果未能解决你的问题,请参考以下文章

apache的rewrite机制

ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

ThinkPHP去掉URL中的index.php

IIS7和IIS8环境下 ThinkPHP专用URL Rewrite伪静态规则

Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式

Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php