Apache Laravel将www重定向到htaccess无法正常工作的非www
我在一个Apache Laravel将www重定向到htaccess无法正常工作的非www,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我在一个.htaccess文件中有以下几行代码,该文件将www URL重定向到非www URL: RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] 它在尝试加载索引路由时正常工作:https://www.example.com至https://example.com,但如果有人试图加载任何其他路由,它不会加载任何内容,例如,如果我尝试加载https://www.example
.htaccess
文件中有以下几行代码,该文件将www URL重定向到非www URL:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
它在尝试加载索引路由时正常工作:https://www.example.com
至https://example.com
,但如果有人试图加载任何其他路由,它不会加载任何内容,例如,如果我尝试加载https://www.example.com/about-us
它将URL转换为https://example.com/index.php
并且它不会加载任何内容
我怎样才能解决这个问题
编辑
我的完整.htaccess
如下所示:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_URI} !(\.css|\.pdf|\.mp4|\.woff|\.woff2|\.ttf|\.js|\.png|\.jpg|\.jpeg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(css|js|images|favicon|fonts|font|videos|storage|pdf)/(.*)$ public/$1/$2 [L,NC]
</IfModule>
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
<FilesMatch ".(eot|ttf|otf|woff|woff2)">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
<Files .env>
order allow,deny
Deny from all
</Files>
选项-多视图-索引
重新启动发动机
重写条件%{HTTP_HOST}^www\.(.*)$[NC]
重写规则^(.*)$https://%1/$1[R=301,L]
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
重写cond%{REQUEST_URI}!(\.css\.pdf\.mp4\.woff\.woff2\.ttf\.js\.png\.jpg\.jpeg\.gif\.robots\.txt)$[NC]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_URI}^/公开的/
重写规则^(css | js |图像| favicon |字体|字体|视频|存储| pdf)/(.*)$public/$1/$2[L,NC]
标题集访问控制允许原点“*”
标题集访问控制允许原点“*”
命令允许,拒绝
全盘否定
您可以试试这个
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]
这种重定向可能发生在重写到index.php之后,在这种情况下,您最终会重定向到重写的URL。尝试将这些规则移到顶部。htaccess@apokryfos我已经将这些行移到了文件的开头,就在行上的
RewriteEngine之后,但结果相同:/“我已经将这些行移到了开头”-如果您以前在文件的后面有这些指令,那么您可能看到了缓存响应。默认情况下,浏览器会永久缓存301(永久)重定向。否则,以当前顺序发布的指令看起来正常。@MrWhite您是对的,在修改这些指令时不知道缓存响应,现在它正在工作。这些行的结果相同。