Как сделать 301 редирект с index.php?page=name на name.htm ?

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

MarineKosha
New Member
New Member
Posts: 7
Joined: Tue Oct 22, 2013 7:31 pm

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by MarineKosha »

guro wrote:Первые два редиректа у вас работают (с www на без www, с index.php на /).
C index.php на / сегодня заработал, пожонглировали чем-то, как-то получилось. А с www до сих пор не работает, отдает 403 ошибку, редирект не делает(

За информацию про якори спасибо большое!
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by guro »

Вообще-то у вас должен работать редирект с www
Вот попробуйте вот такой вариант:

Code: Select all

RewriteCond %{HTTP_HOST}  ^www\.(.+)$  [NC]
RewriteRule ^(.*)  http://%1/$1 [L,R=301] 
100% рабочий.
MarineKosha
New Member
New Member
Posts: 7
Joined: Tue Oct 22, 2013 7:31 pm

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by MarineKosha »

guro wrote:Вообще-то у вас должен работать редирект с www
Вот попробуйте вот такой вариант:

Code: Select all

RewriteCond %{HTTP_HOST}  ^www\.(.+)$  [NC]
RewriteRule ^(.*)  http://%1/$1 [L,R=301] 
100% рабочий.
Простите, пожалуйста, что туплю, но код будет выглядеть вот так:
{HTTP_HOST} ^www.mysite\.ru(.+)$ [NC]
RewriteRule ^(.*) http:/mysite.ru/%1/$1 [L,R=301]
Верно? Или так:
{HTTP_HOST} ^www.mysite.ru\.(.+)$ [NC]
RewriteRule ^(.*) http:/mysite.ru/%1/$1 [L,R=301]
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by guro »

MarineKosha wrote:Простите, пожалуйста, что туплю, но код будет выглядеть вот так:
;D
Нет. Код будет выглядеть вот так

Code: Select all

RewriteCond %{HTTP_HOST}  ^www\.(.+)$  [NC]
RewriteRule ^(.*)  http://%1/$1 [L,R=301]
MarineKosha
New Member
New Member
Posts: 7
Joined: Tue Oct 22, 2013 7:31 pm

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by MarineKosha »

guro wrote:
MarineKosha wrote:Простите, пожалуйста, что туплю, но код будет выглядеть вот так:
;D
Нет. Код будет выглядеть вот так

Code: Select all

RewriteCond %{HTTP_HOST}  ^www\.(.+)$  [NC]
RewriteRule ^(.*)  http://%1/$1 [L,R=301]
Спасибо большое за помощь! Проблема была в удалённой ссылке htdocs.www.mysite.ru -> htdocs, ее восстановили, и все заработало.
akkord
Forum Members
Forum Members
Posts: 24
Joined: Tue Nov 17, 2009 8:11 am

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by akkord »

Здравствуйте!
Что-то я запутался... проблема таже Как сделать 301 редирект с index.php?page=

Code: Select all

# Attempt to override some php settings, these settings may be helpful on some hosts if your
# default configuration does not meet CMS's minimum requirements, and your host
# has given your account appropriate permissions
#php_value upload_max_filesize "10M"
#php_value session_save_path "tmp/cache"

#php_flag magic_quotes_gpc Off
#php_flag register_globals Off
#php_flag session.use_trans_sid Off

# (this is important, so uncomment if your host permit)
#Options -Indexes
#ServerSignature Off

#Options +FollowSymLinks

# To prevent E_STRICT problems with PHP 5.3+ you can uncomment the following lines
# Note: These settings should only be enabled for production sites!
#php_flag display_startup_errors 0
#php_flag display_errors 0
#php_flag html_errors 0
#php_value docref_root 0
#php_value docref_ext 0

<IfModule mod_rewrite.c>
RewriteEngine on
#
#Sub-dir e.g: /cmsms
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{QUERY_STRING} ^page=(.*)$
RewriteRule ^.*$ %1/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.*)$ index.php?page=$2&hl=$1 [QSA]

</IfModule>

<IfModule mod_header.c>
# Disable ETags
Header unset ETag
FileEtag None
</IfModule>

<IfModule mod_deflate.c>
# Compress css, plaintext, xml, gif, and images in transport.
AddOutputFilterByType DEFLATE text/css text/plain text/xml image/gif image/jpeg image/png
</IfModule>

<IfModule mod_expires.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
# Set expires tags on various files... so that the browser wont attempt to reload them.
ExpiresActive On
ExpiresDefault "access plus 1 year"
<IfModule mod_header.c>
  # Setting cache control to public allowes proxy servers to cache the items too.
  Header set Cache-Control "public"
</IfModule>
</FilesMatch>
</IfModule>
Что у меня может быть неправильно?

Что на что мне нужно поменять???

p.s. в конфиге - $config['url_rewriting'] = 'mod_rewrite';

Заранее благодарен!
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by guro »

Какие ответы дает сервер при обращении к index.php?page=name ?

Code: Select all

RewriteRule ^([^/]+)/(.*)$ index.php?page=$2&hl=$1 [QSA]
Для каких целей это было сделано?
akkord
Forum Members
Forum Members
Posts: 24
Joined: Tue Nov 17, 2009 8:11 am

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by akkord »

guro wrote:Какие ответы дает сервер при обращении к index.php?page=name ?

Code: Select all

RewriteRule ^([^/]+)/(.*)$ index.php?page=$2&hl=$1 [QSA]
Для каких целей это было сделано?
у меня все страницы с "index.php?page=name ?".

Если ссылку слеить в браузере, то без неё ответ сервера " 404 Not Found" Apache/2.2.24 Server at ......... Port 80


а по RewriteRule ^([^/]+)/(.*)$ index.php?page=$2&hl=$1 [QSA] - я сам запутался....
akkord
Forum Members
Forum Members
Posts: 24
Joined: Tue Nov 17, 2009 8:11 am

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by akkord »

Склейка произошла! теперь урл красивый!! Но Not Found!

Поменял
RewriteRule ^([^/]+)/(.*)$ index.php?page=$2&hl=$1 [QSA]

на

RewriteRule ^(.+)$ index.php?page=$1 [QSA]

теперь ждёмс.


ВСЁ ЛИ Я СДЕЛАЛ ПРАВИЛЬНО?
akkord
Forum Members
Forum Members
Posts: 24
Joined: Tue Nov 17, 2009 8:11 am

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by akkord »

На данный момент:
При переходе по старым ссылкам с врезкой index.php?page= всё работает. Система их отображает в том же виде без преобразовывания (вырезания).

При переходе по склееной ссылке ничего на работает!
Переходы по разделам сайта (верхнее меню и т.д.) уже происходят по склееным ссылкам НО НОТ ФАУНД!

Что я сделал не так?
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by guro »

Вставьте вот это

Code: Select all

RewriteRule ^(.*) http://google.ru/ [R=301,L]
после

Code: Select all

RewriteEngine On
Сработает редирект.

PS
Не пишите, пожалуйста, про склейки и вырезания. Очень сложно понять из ваших слов что именно у вас происходит. И удобней писать код редиректа и ответа сервера (301, 404, 200...)

Перефразирую ваш текст.
При переходе по ссылкам index.php?page= сайт открывается, но редиректа не происходит.

При переходе по ссылке site.ru/name/ получаем 404 ответ сервера.
Я вас правильно понял?
akkord
Forum Members
Forum Members
Posts: 24
Joined: Tue Nov 17, 2009 8:11 am

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by akkord »

Да. Совершенно верно!

Code: Select all

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*) [b]http://google.ru/[/b] [R=301,L]
#
#Sub-dir e.g: /cmsms
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{QUERY_STRING} ^page=(.*)$
RewriteRule ^.*$ %1/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

</IfModule>
вот так?

Почему Гугл? (или там нужно было поставить мой сайт?)
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by guro »

Вот так

Code: Select all

RewriteEngine on
RewriteRule ^(.*) http://google.ru/ [R=301,L]
можете поставить любой другой сайт))
akkord
Forum Members
Forum Members
Posts: 24
Joined: Tue Nov 17, 2009 8:11 am

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by akkord »

Всё сделал НО
При переходе по ссылке site.ru/name/ получаю 404 ответ сервера.

При переходе по ссылкам index.php?page= сайт открывается, но редиректа не происходит.

Вернул всё в исходное:
htaccess

Code: Select all

# Attempt to override some php settings, these settings may be helpful on some hosts if your
# default configuration does not meet CMS's minimum requirements, and your host
# has given your account appropriate permissions
#php_value upload_max_filesize "10M"
#php_value session_save_path "tmp/cache"

#php_flag magic_quotes_gpc Off
#php_flag register_globals Off
#php_flag session.use_trans_sid Off

# (this is important, so uncomment if your host permit)
#Options -Indexes
#ServerSignature Off

#Options +FollowSymLinks

# To prevent E_STRICT problems with PHP 5.3+ you can uncomment the following lines
# Note: These settings should only be enabled for production sites!
#php_flag display_startup_errors 0
#php_flag display_errors 0
#php_flag html_errors 0
#php_value docref_root 0
#php_value docref_ext 0

<IfModule mod_rewrite.c>
RewriteEngine on
#
#Sub-dir e.g: /cmsms
RewriteBase /

# 301 Redirect all requests that don't contain a dot or trailing slash to
# include a trailing slash
# but ignore POST requests.
#RewriteCond %{REQUEST_URI} !/$
#RewriteCond %{REQUEST_URI} !\.
#RewriteCond %{REQUEST_METHOD} !POST$
#RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]


# Rewrites urls in the form of /parent/child/
# but only rewrites if the requested URL is not a file or directory
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
</IfModule>

<IfModule mod_header.c>
# Disable ETags
Header unset ETag
FileEtag None
</IfModule>

<IfModule mod_deflate.c>
# Compress css, plaintext, xml, gif, and images in transport.
AddOutputFilterByType DEFLATE text/css text/plain text/xml image/gif image/jpeg image/png
</IfModule>

<IfModule mod_expires.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
# Set expires tags on various files... so that the browser wont attempt to reload them.
ExpiresActive On
ExpiresDefault "access plus 1 year"
<IfModule mod_header.c>
  # Setting cache control to public allowes proxy servers to cache the items too.
  Header set Cache-Control "public"
</IfModule>
</FilesMatch>
</IfModule>
config

Code: Select all

<?php
# CMS Made Simple Configuration File
# Documentation: /doc/CMSMS_config_reference.pdf
#
$config['dbms'] = 'mysqli';
$config['db_hostname'] = 'localhost';
$config['db_username'] = '................';
$config['db_password'] = '.................';
$config['db_name'] = '.................';
$config['db_prefix'] = 'cms_';
$config['timezone'] = 'Europe/Moscow';
$config['locale'] = 'ru_RU.UTF-8';
?>
Как мне правильно сделать редирект с index.php?page= на site.ru/name/ ?

Помогите неопытному

Что и где надо исправить?
:'( :'( :'(
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Как сделать 301 редирект с index.php?page=name на name.h

Post by guro »

Ещё раз повторяю.
В htaccess вставляете следующее

Code: Select all

RewriteEngine on
RewriteRule ^(.*) http://google.ru/ [R=301,L]
Заходите на сайт. Происходит редирект на гугл?
Locked

Return to “Russian - русский”