4

サーバーはデフォルトで、example.com/folder と入力したユーザーを example.com/folder/ にリダイレクトします

それを変更する方法はありますか (たとえば、example.com/folder に移動して otherexample.com/folder/ にリダイレクトする場合)。ただし、これはすべてのフォルダーに影響する必要がありますが、ルートは除外されます。また、example.com/folder/ と入力してもコードは何もしません。

編集

また、コードは画像や他のすべてのファイル (または、要求されたドキュメントにファイル拡張子がある場合) に影響を与えるべきではなく、フォルダーだけに影響を与える必要があります。

例:

should affect : example.com/folder
              : example.com/folder/folder

but should not : example.com
               : example.com/forum (but only forum, only this folder)
               : example.com/folder/
               : example.com/folder/.
               : example.com/folder/folder/
               : example.com/image.png
               : example.com/something.something
               : example.com/something.
               : example.com/.something

編集

そして別の編集: .htaccess コード (以下の最初の回答) を見つけたとしましょう。私のウェブサイト全体のようにリダイレクトしたくない私のブログ (example.com/blog) 以外のすべてのドメインとウェブサイトで機能させるにはどうすればよいですか?

4

5 に答える 5

7

サーバーはデフォルトで、example.com/folder と入力したユーザーを example.com/folder/ にリダイレクトします

これは、いくつかの正当な理由によりmod_dirによって行われます。そのすべてについては、 DirectorySlashのドキュメントで説明されています。を使用DirectorySlash Offしてその動作をオフにすることもできますが、非常に正当で正当な理由がない限り、通常はこれを行うことはお勧めできません。

ただし、そうは言っても、質問で説明したことはmod_rewriteだけで処理できます。まず、要求されたリソースがディレクトリかどうかを確認する必要があります。内の物理ディレクトリである必要がありますDocumentRoot

RewriteCond   %{DOCUMENT_ROOT}%{REQUEST_URI}  -d

も適用することが非常に重要%{DOCUMENT_ROOT}です。そうしないと、ディレクトリ チェックが機能しません。


  • '-d' (ディレクトリ)

    TestString をパス名として扱い、それが存在するかどうか、およびディレクトリであるかどうかをテストします。


次に、実際に末尾にスラッシュがあるディレクトリへのすべてのリクエストを無視する必要があります。

RewriteCond   %{REQUEST_URI}                  !/$

これで、別のドメインにリダイレクトしたいリソース (末尾にスラッシュのないディレクトリ) だけを絞り込むことができました。他のすべて (末尾にスラッシュがあるディレクトリ、画像など) は、この時点ではまだゲームに含まれていません。実際のリダイレクトの時間。

RewriteRule   ^   http://other.com%{REQUEST_URI}/ [redirect=temp,last]

後でリダイレクトについて気が変わったかもしれないので、永続的なリダイレクト (別名301 Moved Permanently )の代わりに一時的なリダイレクト (別名302 Found ) を使用する必要があります。はmod_rewrite にそれ以降のすべての処理を停止するように指示します。last

そして、これが最終製品です:

RewriteEngine On

RewriteCond   %{DOCUMENT_ROOT}%{REQUEST_URI}  -d
RewriteCond   %{REQUEST_URI}                  !/$

RewriteRule   ^   http://other.com%{REQUEST_URI}/ [redirect=temp,last]
于 2013-01-18T00:09:16.423 に答える
4

どうですか

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://otherexample.com/$1/ [L,R=301]
于 2013-01-11T17:50:15.870 に答える
1

これがあなたが必要とするものであることを願っています

Redirect 301 /directory http://www.newdomain.com

フォルダ名でディレクトリを変更するだけです

于 2013-01-11T17:53:04.067 に答える
1
# This allows you to redirect your entire website to any other domain
Redirect 301 / http://mt-example.com/

# This allows you to redirect your entire website to any other domain
Redirect 302 / http://mt-example.com/

# This allows you to redirect index.html to a specific subfolder
Redirect /index.html http://example.com/newdirectory/

# Redirect old file path to new file path
Redirect /olddirectory/oldfile.html http://example.com/newdirectory/newfile.html

# Provide Specific Index Page (Set the default handler)
DirectoryIndex index.html

RewriteEngine メソッドの詳細はこちら

于 2013-01-11T17:50:40.897 に答える
1

: www.newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !newdomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

対象 : olddomain.com から newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !newdomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]
于 2013-01-20T15:49:45.333 に答える