.htaccess 强制 www。和西莱克斯

.htaccess force www. and Silex

我想在我的网站上强制使用 'www' 前缀。我知道网上有所有相关内容,但我使用的是 Silex,诀窍是让它协同工作。

这是我的 .htaccess 文件:

<IfModule mod_rewrite.c>
   RewriteEngine On
   ErrorDocument 404 /404.html
   RewriteRule ^$ index.php?/ [QSA,L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   #RewriteCond %{HTTP_HOST} !^$
   #RewriteCond %{HTTP_HOST} !^www\. [NC]
   #RewriteCond %{HTTPS}s ^on(s)|
   RewriteRule (.*) index.php?/ [QSA,L]
   #RewriteRule (.*) http%1://www.%{HTTP_HOST}%/index.php?/ [R=301,L]
   #RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

您的 htaccess 文件中有一堆杂乱无章的条件,看起来像是随机排列。 RewriteCond 仅适用于他们之后的第一个 RewriteRule

如果你把这个

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

在你的 htaccess 的顶部,在 RewriteEngine On 之后和你的其他规则之前,它应该处理你的 www 问题

我还会将 ErrorDocument 404 /404.html 放在重写规则的底部,因为它不是重写并且不需要在规则块中混淆的东西。

</IfModule>
ErrorDocument 404 /404.html

如果这对您有用,请告诉我。