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/cn.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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP