發現美,玩起來
原始 localhost/edu/public/index.php
一. 消滅 localhost/edu/public/部分 通過配置虛擬主機實現
-
配置本地ip和域名的對映 C:\Windows\System32\drivers\etc 的 hosts 檔案中 127.0.0.2 www.edu.com
-
配置 127.0.0.2 所對應的網站根目錄 D:\wamp\bin\apache\apache2.4.9\conf\extra 的 httpd-vhosts.conf 檔案中
<VirtualHost 127.0.0.1:80> DocumentRoot “d:/wamp/www”
<VirtualHost 127.0.0.2:80> DocumentRoot “d:/wamp/www/edu/public”
然後還要到 httpd.conf 檔案中啟用上面配置的檔案 #Include conf/extra/httpd-vhosts.conf 把#去掉即可。
二. 消滅index.php部分 通過 開啟rewrite+配置.htaccess 協同完成
-
先到 httpd.conf 檔案中開啟rewrite #LoadModule rewrite_module modules/mod_rewrite.so 把#去掉即可。 然後還要確保此檔案中的對應www目錄的 AllowOverride All (一般為預設)
-
到專案根目錄位置(專案入口所在位置)配置 .htaccess
DirectoryIndex index.php index.html index.htm(這一句也可以在虛擬主機中配置,那這裡就不用了)
附:.htaccess 重寫語法 解釋版本
#這個規則實現 當訪問 類似view-1.html 或者 page-1.html 的時候實際訪問的是index.php還能帶引數 RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ index.php?action=$1&id=$2
#不是目錄或目錄不存在 RewriteCond %{REQUEST_FILENAME} !-d #不是檔案或檔案不存在 (這兩個東西相當於兩個判斷條件,不能說把目錄或者圖片檔案的訪問也交給index.php處理吧) RewriteCond %{REQUEST_FILENAME} !-f
#轉給index.php處理, #QSA:表示保留引數如get傳值?xxx==xx…; #PT:再把這個URL交給Apache處理; #L表示是最後一個匹配項,不再往下匹配 #PT和L可加可不加 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
DirectoryIndex index.php
ps1:實際使用時,把中文註釋全部去掉,不然會失效。
ps2: RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.* RewriteRule index.php index.m.php 上面語句的作用是當你是用FF瀏覽器訪問index.php這個檔案的時候,會自動讓你訪問到index.m.php這個檔案
使用版本
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ index.php?action=$1&id=$2
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
DirectoryIndex index.php