2016-08-04 26 views
0

Hier sind die rewriterules für .htaccess. Aber ich stehe vor einem Problem. Hier ist meine .htaccess Datei.Rewriterule im .htaccess-Prioritätskonflikt

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] 

Aber das ist ein Problem, weil es einen Prioritätskonflikt zwischen den URLs gibt. Zum Beispiel https://www.url.com/t3550/#post44859 leitet zu https://www.url.com/threads/3550/#post44859 um, sollte aber statt dessen auf https://www.url.com/threads/3550/#post-44859 umleiten (dies liegt daran, dass ein Konflikt zwischen der ersten und der vierten Regel besteht).

Antwort

4

Fragmente, die Dinge nach #, werden nicht an den Server gesendet. Sie sind rein lokal im Browser und werden nur vom Browser ausgewertet. Eine Regelübereinstimmung auf # kann niemals übereinstimmen, da der Server niemals ein URL-Fragment sehen wird.

+0

Können Sie eine temporäre Lösung bereitstellen? –

+0

Nein, weil das, was Sie versuchen, grundsätzlich unmöglich ist. Ich habe keine Ahnung, welche anderen Einschränkungen Sie für das haben, was Sie erreichen wollen, deshalb kann ich nicht einmal einen anderen Ansatz raten. – deceze