web-dev-qa-db-ja.com

UserDirを有効にしますが、異なる方法で呼び出された場合はURLを書き換えたい

ユーザーが個人用ウェブスペースを使用できるように、新しいサーバーを設定しています。 Apacheのhttpd.confには、次のようなUserDirのディレクティブがあります。

UserDir disabled root
UserDir public_html

これにより、http://myserver/~user/リクエストが機能するようになりましたが、http://myserver/users/usernameを介してページにアクセスできるように設定することも検討しています。

これをどのように行うことができますか?私はmod_rewriteルールについて考えていましたが、今のところ成功していません。

編集:基本的にhttp://myserver/users/usernameリクエストを受け取り、それらをポイントするかhttp://myserver/~user/に書き換えたいと思っています。現時点でアドレスバーで変更されるかどうかは関係ありません。

3
Spartan-196

私は私の古い同僚と相談しましたが、私が探していたルールは次のとおりでした。

RewriteRule ^/users/(.*)$ /~\$1 [R]

Aliasマッチングを使用している場合、次のものが必要になります。

AliasMatch (^[A-Za-z0-9])
1
Spartan-196

チルドを完全に削除するために書き換えルールを使用することに成功した人は次のとおりです。
http://www.bit-integrity.com/2011/08/getting-rid-of-tilde.html

「users」ディレクトリを配置するために彼らがしたことを修正しました。

RewriteEngine On
#RewriteLog logs/rewrite.log # Uncomment for rewrite logging
#RewriteLogLevel 3 # uncomment for verbose logging
RewriteCond %{REQUEST_URI} ^/users/([^/]+)
RewriteCond /home/%1 -d
RewriteRule ^/([^/]+)(.*) /home/$1/public_html/$2

誰かがチルダを使用したバージョンからリダイレクトしたいWebmasterWorld.comのスレッドを次に示します。 http://www.webmasterworld.com/Apache/4362132.htm

チルダバージョンからリダイレクトしたい場合は、このようなものを使用する必要があります。これらの書き換えルールは、各ユーザーに適用されることを意図しています。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /~mysite
RewriteRule (.*) http://example.com/$1 [R=301,L]

RewriteCond %{HTTP_Host} !^(example\.com)?$
RewriteRule (.*) http://example.com/$1 [R=301,L]
1