13

「/some/subdir」の下にあるものを「/some/ subdir/projects」に次のように書き直すための最良の方法は何ですか。

http://www.mydomain.com/some/subidr/test/

...これに:

http://www.mydomain.com/some/subdir/projects/test/

同様の質問が投稿されているのを見つけましたが、私の場合は解決策がうまくいかなかったようです。これまでの私の現在の試み(これはうまくいかないようです):

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/projects/.*$
RewriteRule ^(.*)$ /projects/$1 [L]

編集:サーバーのWebルートへの書き込みアクセス権がないため、.htaccessファイルを/ some/subdir内に配置する必要があることを忘れました。

4

3 に答える 3

13

これは私が最終的に仕事をするようになった解決策です:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L]
于 2009-05-14T17:40:28.773 に答える
7

サーバーのドキュメント ルートにある .htaccess 構成ファイルで次のルールを試してください。

RewriteEngine on
RewriteRule !^some/subdir/projects(/|$) some/subdir/projects%{REQUEST_URI} [L]

ディレクトリでこのルールを使用するに/some/subdir/は、ルールを次のように変更します。

RewriteRule !^projects(/|$) projects%{REQUEST_URI} [L]

/some/subdir/projects/foobarまた、 のリクエストをにリダイレクトする場合は/some/subdir/foobar、このルールを前述のルールの上に置きます。

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /some/subdir/projects[/?\s]
RewriteRule ^some/subdir/projects/?([^/].+)?$ /some/subdir/$1 [L,R=301]
于 2009-05-14T17:05:00.637 に答える
1

私はこれを使用します:

RewriteEngine On
RewriteRule ^(/some/subdir)/(.*)$ $1/projects/$2

にリダイレクトさ/some/subdir/<anything>/some/subdir/projects/<anything>ます。

どこかに設定していない限り/、先頭は実際には URL の先頭と一致する必要があることに注意してください。RewriteBase /

于 2009-05-14T17:16:28.660 に答える