2011-09-12 30 views
0

私がやっていることとどこであなたの助けが必要なのかを簡単にお知らせします。URLをhtaccessで書き換えます

私はブログホスティングサイトを構築しています。私はCMSを終了し、今私はユーザーページをやっています。

私の考えは、すべてのユーザーとブログの所有者がXXX.bloghost.comのようなブログURLを持つように、.htaccessルールを作成することでした。ここで、XXXはブログ名またはブログの所有者名です。ただ、私はここにURLにおける2つの以上のパラメータを使用することを言及する

は、URLの例を示します。ここでは

XXX.bloghost.com -> www.bloghost.com/index.php?user=XXX 

XXX.bloghost.com/NEWS -> www.bloghost.com/index.php?user=XXX&category=NEWS 

XXX.bloghost.com/NEWS/SAMPLE -> www.bloghost.com/index.php?user=XXX&category=NEWS&post=SAMPLE 

は私の現在の.htaccessファイル(更新)です:

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !www.bloghost.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).bloghost.com [NC] 
RewriteRule (.*) %2/$1 [L] 

RewriteRule (.+)/(.+)/(.+) blog.php?blog_id=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) blog.php?blog_id=$1&category=$2 [L,QSA] 
RewriteRule (.+) blog.php?blog_id=$1 [L,QSA] 


ErrorDocument 404 /error.php 

Iだろう本当にこれで何か助けが必要です。私はこれにいくつかのチュートリアルを試してみたが、運がない。

また、この.htaccessは、誤って入力されたURLまたは既存のURLを一部のページにブロックしたり、リダイレクトしたりできますか?まず

答えて

3

、あなたはあなたのワイルドカード

ServerAlias www.domain.com domain.com *.domain.com 

のためのサブドメインを設定し、DNSがあまりにもワイルドカード用に設定されていることを確認しなければなりません。

RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+).domain.com [NC] 
RewriteRule (.*) %2/$1 [QSA] 

だから、このページの後http://some.domain.com/newshttp://www.domain.com/some/news に行き、(単なる例)いつものようにURLを処理よります:

RewriteRule (.+)/(.+)/(.+) index.php?user=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) index.php?user=$1&category=$2 [L,QSA] 
// and so on 

しかし、私は2番目の部分はべきであると考える。このようなものを使用するよりもPHPのルーティングシステムで処理する必要があります。

+0

あなたのアートマをありがとう、私はこの後にしようとすると、ここでポスト結果...歓声は、私はちょうどあなたの暗示を試してみましたが、運 URL www.bloghost.com/XXX/NEWSが魔法のように動作していないと – Ivan

+0

をM8が、 XXX.bloghost.comのようなURLに「サーバーが見つかりません」というエラーが表示されます。 !これは私の.htaccessファイルである:(WWW) オプション+ FollowSymLinksを オプション+ でRewriteBase/ するRewriteCond%{HTTP_HOST} www.otvorko.net $ [NC] するRewriteCondの%{HTTP_HOST} ^上のインデックス RewriteEngine? (。+)/(。+)/(。+)blog。[a-z0-9 - ] +。otvorko.net [NC] RewriteRule(。*)%2/$ 1 [L] RewriteRule blog.php?blog_id = $ 1&category = $ 2 [L、QSA] RewriteRule(。+)ブログ。 php?blog_id = $ 1 [L、QSA] – Ivan

+0

ワイルドカード用にDNSとWebサーバー(Apache)を正しく設定しましたか? 'ServerAlias www.otvorko.net dotvorko.net * .otvorko.net'のようなもので、ドメインDNSレコードに' * .otvorko.net A 111.222.33.44'のようなものがありますか? – atma

0

@atmaは既に実際のリダイレクトを処理しました。 .htaccessのエラー処理のための簡単なアドオン:

ErrorDocument 404 /error.php 

Easy! 404エラーはbloghost.com/error.phpに送られます。パスとページ/スクリプトを置き換えてエラーを表示します。