[英]htaccess Redirect problem with internal pages
當我鍵入http://mywebsite.com時,我的服務器成功重定向到http://www.mywebsite.com,但是當我鍵入http://mywebsite.com/page.php時,它重定向到了http://www.mywebsite。 com不要訪問http://www.mywebsite.com/page.php 。
我的服務器是Apache,我使用這些行將.htaccess中的非www重定向到www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(.*)\.mywebsite\.com$ [NC]
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]
謝謝
像這樣嘗試:
# Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
或重定向ot HTTPS:
# HTTP OVER SSL
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我建議以下內容:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mywebsite\.com [NC]
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]
我認為您的條件太嚴格了。 您即將結束( $
)。
如果您不希望在網址的開頭添加www
,那么我更願意使用它:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
我不建議將用戶重定向到.htaccess中。 如果可能,您應該在虛擬主機的配置文件中執行此操作,對於來自非http端口(例如80)的訪問者,使用臨時重定向或適當時使用永久重定向。
它可能看起來像這樣:
<VirtualHost *:80>
ServerName mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot "/var/www/mywebsite.com"
Redirect / https://www.mywebsite.com/
</VirtualHost>
<VirtualHost *:443>
ServerName mywebsite.com
DocumentRoot "/var/www/mywebsite.com"
Redirect / https://www.mywebsite.com/
... SSL stuff
.... your https config for mywebsite here, with SSLCertificate, I believe you need a separate one for without www, to redirect to www.
</VirtualHost>
<VirtualHost *:443>
ServerName www.mywebsite.com
DocumentRoot "/var/www/mywebsite.com"
SSL STUFF****
</VirtualHost>
然后,在.htaccess中,您根本不需要任何重寫。
我認為其他答案的問題是,您正在重寫文件的位置,而該文件的格式應為%{DOCUMENT_ROOT}%{REQUEST_URI},因此您可能會有錯誤處理程序將您發送回首頁頁。 因此,請檢查您的錯誤日志和訪問日志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.