我在生產Laravel網站時,到index.php,這裏是我的問題有4個簡單的URL測試說明:如何避免重定向試圖訪問非WWW網址
- 訪問:https://www.my-website.kr/
結果:https://www.my-website.kr/(都好)
訪問:再次(主頁,但也不能加www
結果:https://www.my-website.kr/(都好,重定向我的非WWW 網址到www)
結果: https://www.my-website.kr/subpage(全部不錯)
- 結果:https://www.my-website.kr/index.php(不好,我不想這樣的index.php)
這最後一次測試它的人,我不能修復,這是很煩人的。當我訪問沒有www的子頁面時;如果唯一的解決方案是重新定向到主頁,但至少沒有index.php這是可以的,這對SEO來說很糟糕。
我知道這些關於htaccess的問題已經被回答了很多次,但我失去了希望......即使是我的專用服務器的技術支持也無法正確回答我的問題。
我目前有兩個htaccess文件;一個坐落在我的public_html根/具有以下內容:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^domain\.kr [NC]
RewriteRule ^(.*)$ https://www.domain.co.kr/$1 [L,R=301,NC]
RewriteCond %{HTTP_HOST} ^domain\.co\.kr [NC]
RewriteRule ^(.*)$ https://www.domain.co.kr/$1 [L,R=301,NC]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
而另一個public_html下/公衆默認的Laravel的htaccess的內容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
你可能會問我爲什麼有我兩個htaccess在兩個不同的位置。我也想知道。事情是我已經做了很多測試,並且我發現將www/https規則直接放在根文件夾類型上效果更好。但我可能是錯的。
再次抱歉,如果這個問題已被問及百萬次,但我找不到適合我的答案。
在此先感謝您的任何幫助。
感謝您的回答@膠囊,它看起來像我沒有得到這討厭的index.php了,這是偉大的,因爲這是一個大問題。但是,似乎www重定向不起作用。我嘗試了關於mod_rewrite日誌的建議,但我不確定我應該尋找什麼。但我會繼續研究它。自從我最大的擔憂消失後,我可能會將您的答案標記爲已解決。 – Valentincognito
奇怪,因爲你不能真正變得更簡單,第二條規則,這是應該照顧非www到www重定向。很高興收到您有關任何進一步調查結果的回覆。 – Capsule
好吧,最後我認爲最好把這兩條規則放在框架的公共文件夾的htaccess中,但作爲你提到的第一條規則。奇怪,因爲public_html根目錄下的htaccess似乎起初工作。也許我已經在我做過的很多測試中迷失了......無論如何現在都好,非常感謝你! – Valentincognito