0

クライアントの古いサイトから新しいサイトへの永続的なリダイレクトを行う必要があります。リダイレクトは hissite.eu から newsite.com へ、同じホスティングですが他のドメインです。今、彼はまだいくつかのサブドメインを介して古いサイトにアクセスしたいと考えていますが、それを機能させることができれば問題ありませんが、古いサイトはカスタム CMS で作成されていて、ハードコーディングが多く、移動すると機能しません。任意のディレクトリに。

私の質問は、oldsite.eu から newsite.com への永続的なリダイレクトを行う場合、どうすれば彼の古いサイトへのアクセスを提供できますか? 彼がドメインの代わりにIPアドレスを入力した場合、どうにかしてリダイレクトしないことは可能ですが、管理パネルが機能しないと思います. おそらく特定のIPを除くすべての人にリダイレクトを行うことは可能ですか?

現在の htaccess で更新中:

<IfModule mod_rewrite.c>
RewriteEngine on

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

RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Rewriterule ^index$                             index.php [L]
Rewriterule ^login$                             login.php [L]
Rewriterule ^register$                          register.php [L]
Rewriterule ^classified_new$                        classified_new.php [L]
Rewriterule ^account_classifieds$                   account_classifieds.php [L]
Rewriterule ^account_classifieds_manage$                account_classifieds_manage.php [L]
Rewriterule ^account_confirm$                   account_confirm.php [L]
Rewriterule ^account_details$                   account_details.php [L]

Rewriterule ^account_invoice_browse$                account_invoice_browse.php [L]
Rewriterule ^account_invoice_details$               account_invoice_details.php [L]
Rewriterule ^account_main$                      account_main.php [L]
Rewriterule ^account_messages$                  account_messages.php [L]
Rewriterule ^account_profile$                   account_profile.php [L]
Rewriterule ^ajax_request$                      ajax_request.php [L]
Rewriterule ^classified_browse$                     classified_browse.php [L]
Rewriterule ^classified_details$                    classified_details.php [L]
Rewriterule ^classified_new_form$                   classified_new_form.php [L]
Rewriterule ^classified_new_premium$                classified_new_premium.php [L]
Rewriterule ^classified_payment$                    classified_payment.php [L]
Rewriterule ^classified_new_confirmation$           classified_new_confirmation.php [L]
Rewriterule ^classified_payment_process$                classified_payment_process.php [L]
Rewriterule ^classified_payment_response$           classified_payment_response.php [L]
Rewriterule ^classifieds_json$                  classifieds_json.php [L]
Rewriterule ^convert$                           convert.php [L]
Rewriterule ^help$                          help.php [L]
Rewriterule ^login_process$                         login_process.php [L]
Rewriterule ^search_advanced$                   search_advanced.php [L]
Rewriterule ^verification_image$                    verification_image.php [L]

#search result
Rewriterule ^search/(.*)$ search_results.php?q=$1 [L]

#classified detail
Rewriterule ^classified/(.*)$ classified_details.php?id=$1 [L]
</IfModule>
4

3 に答える 3

2

特定の IP を除くすべてをリダイレクトすることが可能です。たとえば、リダイレクトに条件を追加できます。

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteRule ^ http://newdomain.com%{REQUEST_URI} [R=301,L]

複数の IP の場合:

RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^ http://newdomain.com%{REQUEST_URI} [R=301,L]

または、IP に同じブロック 192.168.0.1、192.168.0.2、192.168.0.3 がある場合:

RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^ http://newdomain.com%{REQUEST_URI} [R=301,L]

xxx\.xxx\.xxx\.xxxクライアント IP に変更します。

ただし、これにより、たとえば次のようないくつかの問題が発生します。

  1. クライアントはすでにリダイレクトをキャッシュしている可能性があるため、一時的に別のブラウザーを使用するか、キャッシュをクリアするようにクライアントに依頼する必要があります (常に機能するとは限りません)。

  2. 古いルールを削除すると、.htaccess にあった可能性があり、期待どおりに機能しません。

  3. クライアントが動的 IP を持っている場合は、アクセスしようとするたびに変更する必要があります。

おそらく他にもありますが、これが最も一般的です。

于 2013-08-29T19:54:15.613 に答える