перенаправить (mod_rewrite) конкретную страницу в новый домен - PullRequest
2 голосов
/ 12 марта 2012

Я хочу перенаправить группу страниц на новый домен, но пока я просто не могу этого сделать.

Я хочу любой запрос, который начинается с:

http://www.mydomain.com/wiki/index.php?title=CSV_to_QuickBooks_Converter

для перенаправления на:

www.StatementConverter.com

Пример:

http://www.mydomain.com/wiki/index.php?title=CSV_to_QuickBooks_Converter_-_ABCXYZ

должен быть перенаправлен на:

http://www.StatementConverter.com

Мой .htaccess выглядит так:

# Prevent viewing of the .htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>

# Cache files for one month
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Options +FollowSymLinks 
RewriteEngine on
RewriteBase /

# trying to redirect these pages to new website
RewriteCond %{QUERY_STRING} ^(.*)CSV_to_QuickBooks_Converter$ [NC]
RewriteRule ^.*$ http://www.statementconverter.com/ [R,L]

Пока что отображается исходная страница (мое правило не применяется).

РЕШЕНИЕ:

Включая полученные ответы, я использую это, и оно работает:

RewriteCond %{QUERY_STRING} ^title=CSV_Statement_to_QuickBooks_Converter [NC] 
RewriteRule ^.*$ http://statementconverter.com/? [R,L]

Я добавил "?" в конце RewriteRule, чтобы предотвратить добавление исходной строки запроса к новому URL.

Ответы [ 3 ]

0 голосов
/ 12 марта 2012

Если вы хотите, чтобы любой запрос, который начинается с этого URL, был перенаправлен, не привязывайте регулярное выражение в RewriteCond!

У вас есть:

# trying to redirect these pages to new website
RewriteCond %{QUERY_STRING} ^(.*)CSV_to_QuickBooks_Converter$ [NC]
                                                            ^ anchored to exact match!
RewriteRule ^.*$ http://www.statementconverter.com/ [R,L]

Точный URL ...CSV_to_QuickBooks_Converter также не перенаправляет?

Кроме того, выполните перезагрузку смещения, если вы используете браузер для проверки этого;может быть, вы стали жертвой кешина.

Кстати ^(.*) бессмысленно!Привязка к началу, но затем жевать любой символ любое количество раз, позволяя остальным совпадать в любом месте строки!:) Также бессмысленно использовать круглые скобки, поскольку вы не используете захваченный текст или не применяете оператор регулярных выражений к группе в скобках.(Это просто привычка, потому что захват (.*) в $1 происходит так часто, верно? Хаха.)

0 голосов
/ 12 марта 2012

Попробуйте скопировать вставить это:

# Prevent viewing of the .htaccess file
<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>

# Cache files for one month
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
    Header set Cache-Control "max-age=2592000"
</FilesMatch>

Options +FollowSymLinks 
RewriteEngine on
RewriteBase /

# trying to redirect these pages to new website
RewriteCond %{QUERY_STRING} (^|&)title=CSV_to_QuickBooks_Converter [NC]
RewriteRule (.*) http://www.statementconverter.com/ [R,L]

И скажите мне, если это работает

0 голосов
/ 12 марта 2012

Возможно, это как-то связано с символами ^ и $.Попробуйте:

RewriteCond %{QUERY_STRING} \btitle=CSV_to_QuickBooks_Converter [NC]
RewriteRule ^.*$ http://www.statementconverter.com/? [R,L]

Не отправляйте 301 переадресацию, пока вы не проверите правила тщательно и не готовы к работе.301 перенаправления кэшируются браузерами и поисковыми системами.Хотя вы можете очистить кеш браузера после внесения изменений в правила перенаправления, вы не всегда можете сказать поисковым системам, что нужно возвращаться, потому что вы изменили URL перенаправления.

...