ユーザーが個人用ウェブスペースを使用できるように、新しいサーバーを設定しています。 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/
に書き換えたいと思っています。現時点でアドレスバーで変更されるかどうかは関係ありません。
私は私の古い同僚と相談しましたが、私が探していたルールは次のとおりでした。
RewriteRule ^/users/(.*)$ /~\$1 [R]
Alias
マッチングを使用している場合、次のものが必要になります。
AliasMatch (^[A-Za-z0-9])
チルドを完全に削除するために書き換えルールを使用することに成功した人は次のとおりです。
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]