簡體   English   中英

htaccess內部頁面重定向問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM