我在.htaccess文件中有这个:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但每当我访问我的root文件时,http://example.com/robots.txt它会重定向到http://www.example.comrobots.txt/.
我该如何纠正这个问题,以便它能正确地重定向到http://www.example.com/robots.txt?
Ran*_*unt 375
将配置更改为此(添加斜杠):
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
或者下面概述的解决方案(由@absiddiqueLive提出)适用于任何域:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
如果您需要支持http和https并保留协议选项,请尝试以下操作:
RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]
Run Code Online (Sandbox Code Playgroud)
替换login为checkout.php您需要支持HTTPS的URL或任何URL.
我认为这是个坏主意.为了推理,请阅读这个答案.
Ale*_*sov 86
这是支持https和http的正确解决方案:
# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
abs*_*ive 81
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
对于Https
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
sta*_*een 22
以下示例适用于ssl和非ssl,并且速度更快,因为您只使用一个规则来管理http和https
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
Run Code Online (Sandbox Code Playgroud)
[测试]
这将重定向
HTTP
至
HTTPS
至
小智 8
尝试这个,我在许多网站上使用它,它的工作完美
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1 [QSA,L,R=301]
Run Code Online (Sandbox Code Playgroud)
我已经测试了上述所有解决方案,但对我不起作用,我尝试删除 http:// 并且不会重定向,也删除了 www 它重定向得很好,所以我很困惑,特别是我在 https 下运行我的所有网站://
所以我将一些代码组合在一起,并为 http:// 和 https:// 以及 www 和非 www 提供了完美的解决方案。
# HTTPS forced
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Redirect to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助别人:)
| 归档时间: |
|
| 查看次数: |
387209 次 |
| 最近记录: |