作者系統是Ubuntu,CentOS及其他linux發行版請自行變更
html' target='_blank'>PHP框架是ThinkPHP5.0,官方文檔說的有些模糊,所以自行補充了一下
有錯誤歡迎隨時指出
可以通過URL重寫隱藏應用的入口文件index.php,下面是相關服務器的配置參考:
[Apache]1.啟用rewrite模塊
2.sudo a2enmod rewrite 或者 sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
3.編輯配置文件/etc/apache2/apache2.conf,找到自己web根目錄對應的位置
Directory /var/www/ Options Indexes FollowSymLinksAllowOverride NoneRequire all granted /Directory
4.將AllowOverride None 改為AllowOverride All
5.重啟服務sudo service apache2 restart
6.把下面的內容保存為.htaccess文件放到應用入口文件的同級目錄下(默認已創建,如果沒有自己創建)
IfModule mod_rewrite.c Options +FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] /IfModule[Nginx]
在Nginx低版本中,是不支持PATHINFO的,但是可以通過在Nginx中配置轉發規則實現,
編輯文件/etc/nginx/sites-available/default:
server { // …..省略部分代碼 root /var/www/html; //找到這個模塊,然后填入下面的配置 location / { // …..省略部分代碼 if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; }
其實內部是轉發到了ThinkPHP提供的兼容URL,利用這種方式,可以解決其他不支持PATHINFO的WEB服務器環境。
如果你的應用安裝在二級目錄,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
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
Nginx中Location的配置方法
使用nginx在一臺服務器部署多個Web Server
以上就是ThinkPHP5.0 Linux Apache/Nginx重寫URL配置的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答