Подтвердить что ты не робот

.htaccess Удалить WWW из URL + Каталогов

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

APACHE 2.4 И NEWER

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 И NEWER

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 доступен только из последнего RewriteCond...

Ответ 3

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

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

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

Ответ 5

bhaisahab koi код bhi kaam nhi kar raha hai.htaccess файл мне сервер apache pe

Ответ 6

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

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

Ответ 7

Привет, код работает отлично, за исключением того, что он передает с 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)|.+[^/])$ /$1/ [R=301,NC] RewriteRule ^(.[^.*]+)\/$ ?jogar=$1 [NC] Options -Indexes Options +FollowSymLinks RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http:\/\/%1%{REQUEST_URI} [R=301,QSA,NC,L] Код >