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 其他不变
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地址重写问题的主要内容,如果未能解决你的问题,请参考以下文章
ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
IIS7和IIS8环境下 ThinkPHP专用URL Rewrite伪静态规则