我需要帮助来设置我的 .htaccess,以便它能够在两种不同的条件下工作。
第一个条件是:
RewriteEngine on
RewriteCond %{request_filename} -f
RewriteRule ^(.*) $1 [L]
RewriteRule ^(([^/]*)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L]
我想添加一个条件,将非 www 重写为 www
如何在我的网站上强制使用 www.?
我想通过 htaccess 强制 www,但我不知道该怎么做。
答案1
任何规范重定向都应该前您现有的内部重写。因此,请尝试以下操作:
RewriteEngine On
# Canonical non-www to www redirect
RewriteCond %{HTTP_HOST} =example.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
# Internal rewrites
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L]
我还稍微整理了您现有的重写。如果您不想更改 URL,请-
在替换中使用单个连字符 ( ),而不是重写为自身。诸如 (0 次或多次,至少 1 次) 之类的模式与(1 次或多次)([^/]*)+
相同。[^/]+