douyong5825 2016-08-04 10:42
浏览 93
已采纳

在.htaccess优先级冲突中重写

Here are the rewriterules for .htaccess. But I am facing a problem. Here is my .htaccess file.

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]

But this is a problem because there is a priority conflict between the urls. For Example https://www.url.com/t3550/#post44859 redirects to https://www.url.com/threads/3550/#post44859 but should instead should redirect to https://www.url.com/threads/3550/#post-44859 (this is because there is a conflict between the first and the fourth rule).

  • 写回答

1条回答 默认 最新

  • douyu0792 2016-08-04 10:46
    关注

    Fragments, the things after #, are not sent to the server. They're purely local in the browser, and only evaluated by the browser. A rule matching on # can never match, because the server will never get to see a URL fragment.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?