2016-08-04 9 views
0

次は.htaccessのリライトです。しかし、私は問題に直面しています。 ここに私の.htaccessファイルがあります。.htaccess優先度競合のリライト・リテラル

RewriteEngine On 
RewriteBase /dashboard/sample_proj/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule t([\d]+)/ threads/$1/ [R=301] 
RewriteRule f([\d]+)/ forums/$1/ [R=301,L] 
RewriteRule t([\d]+)-([\d]+)/ threads/$1/page-$2 [R=301,L] 
RewriteRule t([\d]+)/#post([\d]+) threads/$1/#post-$2 [R=301,L] 

しかし、これはURL間に優先順位の競合があるため問題です。 例 https://www.url.com/t3550/#post44859https://www.url.com/threads/3550/#post44859にリダイレクトされますが、代わりにhttps://www.url.com/threads/3550/#post-44859にリダイレクトする必要があります(これは、第1ルールと第4ルールが競合しているためです)。

答えて

4

フラグメントの場合、#以降のものはサーバーに送信されません。これは純粋にブラウザ内のローカルなので、ブラウザによってのみ評価されます。 #のルールマッチングは決して一致しません。なぜなら、サーバーは決してURLフラグメントを見ることができないからです。

+0

一時的な解決策はありますか? –

+0

いいえ、あなたがやろうとしていることは基本的に不可能です。あなたが達成しようとしているものに対して他にどのような制約があるかわからないので、私は他のアプローチについて助言することもできません。 – deceze