iT邦幫忙

0

為什麼升級 Ubuntu 18.04.2 https 下, .htaccess 沒有作用?

小弟原本是用 Ubuntu 16.x 版本,架設 WordPress 運作正常(有為了防駭,將真實目錄設定在 var/www/html/CMS-01/ 下)
前一陣子升級到 18.04.2 後,發現 WordPress 只有第一頁正常,以下的網頁都看不到了...

原本以為是 .htaccess 完全沒作用;但簡化環境後,測試發現,http 連線時,rewrite 是可以用的...但只要改用 https 就不行了,不知道是哪裡出問題,懇請高手們幫幫忙,謝謝大家!

P.S. 小弟的 SSL 是用 LetsEncrypt 的
我有試著故障排除,按照 https://itw01.com/QVUA3E2.html 這篇文章,先把原有的 .htaccess 改名,再建一個簡單的 .htaccess (/var/www/html/.htaccess):
RewriteEngine on
RewriteRule ^about$ about.html [NC]
然後也建了文章教的 about.html

最後用 http://我的網址/about 測試,可以看到 「Aboout Us」 的內文
可是只要用 https://我的網址/about 方式看,就只出現 404 的錯誤...
因此,我懷疑是不是我少設了什麼,才導致 http 可以,https 不行。

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2019-10-31 15:27:51 檢舉
我 wordpress 不熟

不過我相信如果沒看到你的 .htaccess

是怎麼寫的

應該其他邦友很難幫到忙XD
froce iT邦大師 1 級 ‧ 2019-10-31 16:31:25 檢舉
還要log...

不過我覺得在這個論壇真的要先去修個通靈還是占卜這種前置技能。XD
咖咖拉 iT邦研究生 5 級 ‧ 2019-10-31 17:39:47 檢舉
請問 再Ubuntu 16.x 你的目錄就改成 var/www/html/CMS-01/
還是升級後改的?
terryliu iT邦新手 5 級 ‧ 2019-10-31 18:33:10 檢舉
冰水您好,原本就是在 var/www/html/CMS-01/ 下,是升級 Ubuntu 後才出問題的,謝謝您的回覆!
terryliu iT邦新手 5 級 ‧ 2019-10-31 18:43:21 檢舉
也謝謝上面的大師們,因為下午人在外面,比較沒辦法列出細節。

其實我最後只是簡單的故障排除,按照 https://itw01.com/QVUA3E2.html 這篇文章,先把原有的 .htaccess 改名,再建一個簡單的 .htaccess (/var/www/html/.htaccess):
RewriteEngine on
RewriteRule ^about$ about.html [NC]
然後也建了文章教的 about.html

最後用 http:// 開頭的方式,可以看到 Aboout Us 的內文
可是只要用 https:// 開頭的方式,就只出現 404 的錯誤...
先試試https://域名/about.html 是否可以正常。也就是不要透過rw規則,直連的方式。
因為搞不好,並不是這邊的問題。而是你的web server設定的問題
terryliu iT邦新手 5 級 ‧ 2019-11-01 07:05:29 檢舉
浩瀚星空 謝謝您的建議,直接輸入 https://域名/about.html 可以正常顯示,所以問題應該是https 下 rw 失效,謝謝您!
froce iT邦大師 1 級 ‧ 2019-11-01 11:00:42 檢舉
所以跟你說要log,因為這種問題應該會在nginx/apache上log有紀錄。
terryliu iT邦新手 5 級 ‧ 2019-11-01 13:38:15 檢舉
force 大師,我是使用 Apache,我找一下 log 來看一下,謝謝您!
apache的話,可能是預設http和https的設定中,AllowOverride這個設定不一致造成的
terryliu iT邦新手 5 級 ‧ 2019-11-04 15:46:55 檢舉
Mike8864aabb 大大,謝謝您!我來試試看!
terryliu iT邦新手 5 級 ‧ 2019-11-14 16:14:45 檢舉
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Added by TeRRyLiu 2019-05-16
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
# End of it

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
RewriteEngine on
RewriteCond %{SERVER_NAME} =dkhcheng.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
terryliu iT邦新手 5 級 ‧ 2019-11-14 16:17:24 檢舉
請問上述的設定檔,是不是還要有 <VirtualHost *:443> 呢?
是否因為只有 <VirtualHost *:80> 沒有 <VirtualHost *:443> 所以 https 無法工作?

尚未有邦友回答

立即登入回答