PHP 板


LINE

看板 PHP  RSS
※ 引述《Moon008 (008)》之銘言: : 各位前輩好, : 最近在測試用Apache架站,希望可以將網頁的副檔名隱藏起來,並且強制使用https連線 : 假設目前網頁有: : index.php : about.html : contact.php : 我希望呈現的是: : https://domain.com/ (index.php) : https://domain.com/about (about.html) : https://domain.com/contact (contact.php) : 在使用https之前,我是使用.htacess的方式,放在根目錄下,設定為: : RewriteEngine on : RewriteBase / : RewriteRule ^([A-Za-z0-9_-]+)$ $1.html : 可是這樣子沒辦法辨識該網頁應該是.php還是.html : 不知道有沒有辦法同時適用? : 另外就是因為目前希望全站都透過https連線, : 可是我將上方的規則修改如下之後: : RewriteEngine on : RewriteBase / : RewriteCond %{SERVER_PORT} !443 : RewriteRule ^([A-Za-z0-9_-]+)$ https://%{SERVER_NAME}/$1.html : 一來是我如果直接輸入:domain.com連入,會預設以http連線, : 且我再點網頁上的連結到別頁(例如href="about") : 卻會把副檔名也加上去(變成https://domain.com/about.html) : 不知道我的需求使用Rewrite是否可以完全達到呢? : 因為爬文似乎都是分開說明(針對.php或https) : 努力結合了幾次仍然失敗..QQ : 先謝謝各位了 >< 因為你說你用 Apache 架站, 那就先假設你有完整的控制權 這樣子可以把功能拆分到兩個 VirtualHost 比較簡單 80 port 只要負責把請求原封不動的丟到 https 就行了 整個設定只要這四行: <VirtualHost *:80> ServerName example.com Redirect 301 / https://example.com/ </VirtualHost> 這個很好用, 因為你不用再去組合你的網址 它會自動幫你把 path 後面的東西貼到 example.com/ 後面去 這邊設定的 path 是 /, 等於全部轉過去 然後在 port 443 這邊放完整的網站設定檔 用 rewrite 處理你的隱藏副檔名 這邊邏輯很簡單, 把附檔名加上去以後有找到檔案的就決定是它了 看你要先找 .html 還是先找 .php 自己調整: <VirtualHost *:443> 略..... <Directory 略.....> 略..... <IfModule rewrite_module> RewriteEngine On # 找看看 .htm 檔案 RewriteCond %{REQUEST_FILENAME}.html -s RewriteRule . %{REQUEST_FILENAME}.html [END] # 再找看看 .php 檔案 RewriteCond %{REQUEST_FILENAME}.php -s RewriteRule . %{REQUEST_FILENAME}.php [END] </IfModule> </Directory> </VirtualHost> 那如果今天你沒有 Apache 控制權怎麼辦? 或許看完上面的你也能寫出來了 但還是給你一個 .htaccess 結合兩者的例子 <IfModule rewrite_module> RewriteEngine On # 去吧 https, 注意這邊用 .* RewriteCond %{HTTPS} !=on RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [END,R=301] # 找看看 .htm 檔案 RewriteCond %{REQUEST_FILENAME}.html -s RewriteRule . %{REQUEST_FILENAME}.html [END] # 再找看看 .php 檔案 RewriteCond %{REQUEST_FILENAME}.php -s RewriteRule . %{REQUEST_FILENAME}.php [END] </IfModule> 使用 rewrite 的技巧之一, 就是不要想把事情一次做完 其實 RewriteCond 就像 if, RewriteRule 就像 then (只是比喻, 實際上...) 所以跟在寫程式一樣, 可以用很多個 if...then 來拆分 然後這邊是用 Apache 2.4 為例, 其中 [END] 這東西在 Apache 2.3.9 後才有 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.68.230.200
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1459459907.A.9B9.html
1F:→ alpe: 沒有[END]用[L]吧 [L] 早期就有 04/01 13:31
2F:→ weiclin: 嗯,只是用 [L] 會多跑一輪,增加了出錯的機會 04/01 14:29
3F:→ weiclin: 所以能用 [END] 最好 xD 04/01 14:30
4F:推 Moon008: 先謝謝大大回應,但是我照文中後者的作法,會出現重新導 04/02 00:17
5F:→ Moon008: 向次數過多的問題(瀏覽器).. 04/02 00:17
6F:→ weiclin: 你是怎麼弄的呢? 另外你可以打開 rewrite log 觀察行為 04/02 00:30
7F:→ weiclin: http://goo.gl/b379e6 04/02 00:31
8F:推 Moon008: 謝謝大大,後來我開log檢查一下,再把Rule改寫一下就ok了 04/03 01:24
9F:→ weiclin: 哦,如果是我寫錯了記得指正一下 xD 04/03 06:45
10F:→ pigwolf: 你關閉離開時,直接回信給使用者 04/07 06:46







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP