2016-09-12 32 views
0

私は本当に新しい.htaccessとして、私はそれをどのくらい使っているかを簡単に取ろうとしています。私はいくつかのURLを書き換えているが問題は、もし私が3つのURLを書き直すと、トップの1つしか働いていない。htaccessはすべてのルールを書き換えません

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^forums/([^/]*)/([^/]*)/$ /forums.php?page=$1&sectionid=$2 [L] 
RewriteRule ^forums/([^/]*)/topic/([^/]*)/$ /forums.php?page=$1&topic=$2 [L] 

ErrorDocument 400 /error.php 
ErrorDocument 401 /error.php 
ErrorDocument 403 /error.php 
ErrorDocument 404 /error.php 
ErrorDocument 500 /error.php 

私は最初の1以上の新しいルールを追加するのであれば、それは作業だけになります。 私はこれを間違った方法で使用していますか?

また、RewriteCondはどのように機能しますか?

+0

あなたには適していないURLは何ですか? – anubhava

答えて

0

は、最後のルールに使用[L][L]フラグを削除してくださいか、ルールごとに別々のRewriteCondを作成し、

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^forums/([^/]*)/([^/]*)/$ /forums.php?page=$1&sectionid=$2 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^forums/([^/]*)/topic/([^/]*)/$ /forums.php?page=$1&topic=$2 [L] 

+0

こんにちは。これはうまくいかなかった。私はこの 'RewriteCond%{REQUEST_FILENAME}のように書き直しました!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule^forums /([^ /] *)/([^ /] *)/ $ /forums.php?ページ= $ 1&tlocate = $ 2 するRewriteCondの%{REQUEST_FILENAME}!-f するRewriteCond%{REQUEST_FILENAME}は! のRewriteRule ^フォーラム/([^ /] *)/([^ /] *)/ $ /フォーラムを-d。 PHP?ページ= $ 1&セクションID = $ 2 するRewriteCondの%{REQUEST_FILENAME}!-f するRewriteCond%{REQUEST_FILENAME}!-d のRewriteRule ^フォーラム/([^ /] *)/トピック/([^ /] *)/ $ /forums.php?page=$1&topic=$2 [L] ' – Synyster

+0

ルールに矛盾があり、これを使って' RewriteRule^forums /([^ /] *)/([^ /] *)/ $ 'を適用しました2つの異なるパラメータ 'tlocate'と' sectionid'は同じルールに適用できませんあなたはexのためにこの条件を区別する新しいルールを作成しなければなりません。 'RewriteRule^forums /([^ /] *)/ sectionid /([^ /] *)/ $ /forums.php?page = $ 1&sectionid = $ 2'のようなものです。これで大丈夫なら言及してください。 –

+0

ありがとうございました。 @アビシェク – Synyster

0

@Abhishekの答えのおかげで、私はそれを解決しました。

URLごとに異なるRewriterulesを使用する必要がありました。彼らがある意味でユニークであったように。

関連する問題