thinkphp站点下怎么隐藏前台和后台的入口文件index.php,admin.php 30
最近也遇到了这个问题,顺便回答一下,我这边前后台入口文件都在一个文件夹里,想配置成以下这样:
前后:www.xxx.com/控制器/方法 (模块已配置故不展示)
后台:www.yyy.com/控制器/方法 (模块已配置故不展示)
所以需要准备两个域名,分别访问前后台,然后在.htaccess文件中通过匹配域名的方式来决定进入哪个规则,所以配置成了下面这样:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^.*xxx\.com$
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteCond %{HTTP_HOST} ^.*yyy\.com$
RewriteRule ^(.*)$ /admin.php/$1 [QSA,PT,L]
</IfModule>
结果前台没问题而后台报错,页面展示:
日志文件里显示:Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace
后来搜索资料解决了这个问题,在.htaccess文件中添加如下两行
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
这两行代码是用来停止重定向无限循环的,至此前后台入口文件都得到了隐藏,希望能帮助后面的人,全部配置代码是:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^.*xxx\.com$
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteCond %{HTTP_HOST} ^.*yyy\.com$
RewriteRule ^(.*)$ /admin.php/$1 [QSA,PT,L]
</IfModule>
这个答案也可以回答重定向次数限制的问题,如果出现这个错误,则考虑是不是重定向无限循环了,至于为什么上面的配置会出现这个错误,我也不明白,同时希望有明白的可以指教。
'URL_MODEL' => 2,//REWRITE模式
注:如果空间不支持伪静态,千万不能把URL_MODEL的值设置为2,不然会打不开网站
你目前的情况,只能设置一个,要么index.php,要么admin.php,你可以把admin.php和index.php合并成一个index.php,.htaccess文件我已经设置了隐藏index.php,这样就行了
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteRule admin$ ./admin.php [NC,L]
RewriteRule admin/$ ./admin.php [NC,L]
RewriteRule admin/(.*)$ admin.php/$1 [NC,QSA,PT,L]
</IfModule>