.htaccess 重写以添加“www”失败,沿着在htaccess中进行内部重写

n3h0vuf2  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(97)

这是我的网站目前的htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(article/?).*$
RewriteRule ^article/?(.*)$ article.php?$1 [L, QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(info/?).*$
RewriteRule ^info/?(.*)$ info.php?$1 [L, QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(admin/?).*$
RewriteRule ^admin/?(.*)$ admin.php?$1 [L, QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L, QSA]

# Force to SSL
RewriteCond %{HTTP:HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301, L]

# Force to WWW
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301, L]

如果该高速缓存在浏览器上被清空,我试图加载“rotak.ro/article/rain“,它会重定向到“https://rotak.ro/article/rain“,因此我无法加载外部php css和java文件,因为缺少www。如果我加载“rotak.ro”,它会正确地将www添加到url的开头。
我假设WWW的RewriteCond在url中有多个斜杠的情况下无法确认,但我不明白错误的地方在哪里。
我想写每个网址,所以rotak.ro/article/rain或rotak.ro/info/cookies重定向到https://wwww.rotak.ro/ ...
我应该如何着手解决此问题?

7d7tgy0s

7d7tgy0s1#

按以下方式创建htaccess规则文件。你需要改变重定向和www实现规则的顺序。这样我们就不需要为你的内部重写设置多个规则,这些规则可以在一个规则集中处理。
请确保在测试URL之前清除浏览器缓存。

RewriteEngine ON  

#Force to SSL
RewriteCond %{HTTP:HTTPS} !1
RewriteRule ^(.*)/?$ https://%{HTTP_HOST}/$1 [R = 301, L, NE]

#Force to WWW
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)/?$ https://www.%{HTTP_HOST}/$1 [L, NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(article|info|admin)/?(.*)/?$ $1.php?$2 [NC,L, QSA]

***注意:***当我们在www规则中放置重定向301时,它会影响内部规则,因此我们必须将其删除。即使是OP内部重写也无法与OP的尝试一起工作。

相关问题