【发布时间】:2020-06-01 12:46:27
【问题描述】:
我已经浏览了数十篇关于此的文章,但没有一篇能解决我的问题,并且一直让我头疼。
这是我想要实现的目标:
1) 我有第二个域名,需要重定向到主域,同时保留 URL 的其余部分,
2) 所有文件都应丢失 .php 扩展名,
3) 强制 WWW,
4) 强制 HTTPS。
现在的问题是,我当前的 .htaccess 仅适用于主域,并且仅在满足 WWW 条件时才有效。让我解释一下。
如果我输入 domain1.com/page 或 domain2.com/page,它将打开 https://www.domain1/2.com /page.php 但它应该只是 /page 没有 .php。
如果我输入 www.domain1.com/page,它将打开 https://www.domain1.com/page - 预期行为,
但如果我输入 www.domain2.com/page,它将打开 https://domain1.com/page.php。
如何确保 HTTP/HTTPS 和 WWW/非 WWW、domain1.com/domain2.com 的任何组合始终重定向到 https://www.domain1.com/page ?
我也很高兴有任何 php 代码建议,我可能会将每个 .php 文件的顶部自动重定向到无扩展名版本,但我真的很想了解为什么我的 .htaccess 不起作用。
代码如下:
## Main Rules
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
## Redirect Domain2.com to Main
RewriteCond %{HTTP_HOST} ^www\.domain2\.com [NC]
RewriteRule ^(.*)$ https://www.domain1.com/$1 [R,L]
## Remove .php Extensions
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
## Force HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
## Force WWW
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ErrorDocument 404 /404
非常感谢!
【问题讨论】:
标签: .htaccess web redirect https