Назад | Перейти на главную страницу

apache о файле .htaccess, я хочу добавить несколько условий в свой файл .htaccess

Мне нужна помощь в настройке моего .htaccess, чтобы он работал с двумя разными условиями.

Первое условие:

RewriteEngine on
RewriteCond %{request_filename} -f
RewriteRule ^(.*) $1 [L]
RewriteRule ^(([^/]*)+)(/([^/]{0,32})(/.+)?)?$  index.php?a=$1&q=$3    [L]

Я хочу добавить условие, которое заменяет не-www на www

Как заставить www. на моем сайте?

Я хочу принудительно использовать www через htaccess, но не знаю, как это сделать.

Любой канонический редирект должен прийти перед ваши существующие внутренние перезаписи. Итак, попробуйте следующее:

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 или более).