nginx - thinkphp 如何实现url的rewrite

WBOY
Release: 2016-06-06 20:51:40
Original
979 people have browsed it

thinkphp 如何实现 "http://localhost/index.php?/模块/操作&quo... 变为 "http://localhost/模块/操作"
我想把URL改成这种形式,看起来会比较舒服,但是不知道怎么实现。
是在conifg里面加参数,还是在nginx里面用rewrite?

回复内容:

thinkphp 如何实现 "http://localhost/index.php?/模块/操作&quo... 变为 "http://localhost/模块/操作"
我想把URL改成这种形式,看起来会比较舒服,但是不知道怎么实现。
是在conifg里面加参数,还是在nginx里面用rewrite?

1.在配置文件将URL模式改成

'URL_MODEL'          => '2', //REWRITE模式
Copy after login

2.Apache服务器的话,将下面的内容保存为.htaccess文件放到入口文件的同级目录

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

Nginx.conf中配置

location / { // …..省略部分代码
   if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=$1  last;
   break;
    }
 }
Copy after login

参考资料:
http://doc.thinkphp.cn/manual/url_rew...
http://doc.thinkphp.cn/manual/hidden_...

建议楼主把手册看一边先,毕竟这是基础的东西。

用 rewrite 的方式。
官方文档: 隐藏index.php

这个需要在nginx的配置里头rewrite。

原来的格式可以保证在服务器(apache/nginx等)没有rewrite模块的情况下,框架也能正常运行。

rewrite可以类似于:

location /your_app/ {
    if (!-f $request_filename) { #如果请求到css等资源则略过
        rewrite ^/your_app/(.*)$ /your_app/index.php?$1; 
    }
}
Copy after login

nginx上rewrite建议使用官方和我都推荐的try_files方法 ;)

location / {
    try_files $uri $uri/ /index.php$uri?$args;
}
Copy after login

看看为什么使用try_files而不是用if来判断

传送门1:http://wiki.nginx.org/HttpCoreModule#...
传送门2:http://wiki.nginx.org/IfIsEvil

开启路由匹配,然后再apache里开启rewrite模式

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template