.htaccess удалить WWW из URL + каталогов

это, кажется, не проблема для многих людей (читайте: Я не могу найти ответ), но я хотел бы обновить следующий код htaccess, чтобы не только удалить " www " из URL, но и любые подкаталоги, к которым обращаются.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/ [R=301,L]

С этим,http://www.example.com/any/ решает отлично, но я хочу, чтобы он перенаправил на http://example.com/any/ как с корнем.

6 ответов


У меня была та же проблема (проблема с удалением " www " из URL-адресов, которые указывают на подкаталог в дополнительном домене), но после некоторых проб и ошибок это, похоже, работает для меня:

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

пример:http://www.addondomain.com/projects/a/gallery/4/2


код перенаправления для безопаснотсть => www и наоборот ВСП => без www. Нет доменов и схем жесткого кодирования .файл htaccess. Таким образом, исходный домен и версия http / https будут сохранены.

APACHE 2.4 И НОВЕЕ

NON-WWW => WWW:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

WWW => NON-WWW:

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

Примечание: не работает на Apache 2.2, где %{REQUEST_SCHEME} недоступен. Для совместимости с Apache 2.2 используйте код ниже или замените %{REQUEST_SCHEME} с фиксированным http / https.


APACHE 2.2 И НОВЕЕ

NON-WWW => WWW:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

... или более короткая версия ...

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|offs
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

WWW => NON-WWW:

RewriteEngine On

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

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

... более короткая версия невозможна, так как %N доступен только с последней перезаписи ...


Я думаю, что вы близки, но попробуйте следующее:

# force non-www domain
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/ [R=301,L]

Не уверен точно, что вы имеете в виду о подкаталогах, но это следует за вашим примером.


я использовал его и он работал для меня

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

пример:http://www.locphen.vn/he-thong-loc-nuoc-gieng.html -> http://locphen.vn/he-thong-loc-nuoc-gieng.html


Я использую этот код. Если у моего посетителя нет www в его url-адресе, это условие добавляет www с url-адресом, иначе нет необходимости добавлять www с url-адресом ( потому что он уже есть. :))

RewriteEngine On
RewriteCond %{HTTP_HOST}  !^www\.YOUR-SITE\.com$ [NC]
RewriteRule ^(.*) http://www.YOUR-SITE.com/ [L,R]

Здравствуйте, код работает отлично, за исключением того, что он проходит с www в url с некоторым значением и косой чертой в конце он показывает параметр и значение в url.

RewriteEngine On SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/plain text/xml RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(!.(\.gif|\.jpg|\.png|\.swf|\.css|\.js|\.txt|\.php|\.htm|\.html)|.+[^/])$ // [R=301,NC] RewriteRule ^(.[^.*]+)\/$ ?jogar= [NC] Options -Indexes Options +FollowSymLinks RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http:\/\/%1%{REQUEST_URI} [R=301,QSA,NC,L]