- 做者系統是Ubuntu,CentOS及其餘linux發行版請自行變動
PHP框架是ThinkPHP5.0,官方文檔說的有些模糊,因此自行補充了一下
有錯誤歡迎隨時指出
能夠經過URL重寫隱藏應用的入口文件index.php,下面是相關服務器的配置參考:php
1.啓用rewrite模塊html
2.sudo a2enmod rewrite 或者 sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.loadlinux
3.編輯配置文件/etc/apache2/apache2.conf,找到本身web根目錄對應的位置nginx
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
4.將AllowOverride None 改成AllowOverride Allweb
5.重啓服務sudo service apache2 restartapache
6.把下面的內容保存爲.htaccess文件放到應用入口文件的同級目錄下(默認已建立,若是沒有本身建立)服務器
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule>
在Nginx低版本中,是不支持PATHINFO的,可是能夠經過在Nginx中配置轉發規則實現,框架
編輯文件/etc/nginx/sites-available/default:iview
server { // …..省略部分代碼 root /var/www/html; //找到這個模塊,而後填入下面的配置 } location / { // …..省略部分代碼 if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } }
其實內部是轉發到了ThinkPHP提供的兼容URL,利用這種方式,能夠解決其餘不支持PATHINFO的WEB服務器環境。ide
若是你的應用安裝在二級目錄,Nginx的僞靜態方法設置以下,其中/tp5/public/是所在的目錄名稱。
location /tp5/public/ { if (!-e $request_filename){ rewrite ^/tp5/public/(.*)$ /tp5/public/index.php?s=/$1 last; } }
原來的訪問URL:
http://serverName/index.php/模塊/控制器/操做/[參數名/參數值...]
設置後,咱們能夠採用下面的方式訪問:
http://serverName/模塊/控制器/操做/[參數名/參數值...]
若是你沒有修改服務器的權限,能夠在index.php入口文件作修改,這不是正確的作法,而且不必定成功,視服務器而定,只是在框架執行前補全$_SERVER['PATH_INFO']參數
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI' ];
最後重啓服務器
sudo service nginx restart