簡體   English   中英

mod_rewrite刪除文件夾+擴展名作品(一個文件夾除外)

[英]mod_rewrite to remove folder + extension works except for one folder

我的mod_rewrite有一個非常奇怪的情況。 我有以下.htaccess文件:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ErrorDocument 404 /404.php

RewriteRule ^approval/(.*)/(.*)/[0-9]$ /view/approval/$1/$2\.php [NC,N]
RewriteRule ^approval/(.*)/(.*)$ /view/approval/$1\.php?id=$2 [NC,N]
RewriteRule ^approval/(.*)$ /view/approval/$1\.php [NC]

RewriteRule ^dashboard/(.*)/(.*)/[0-9]$ /view/dashboard/$1/$2\.php [NC,N]
RewriteRule ^dashboard/(.*)/(.*)$ /view/dashboard/$1\.php?id=$2 [NC,N]
RewriteRule ^dashboard/(.*)$ /view/dashboard/$1\.php [NC]

批准工作的重寫規則-它們刪除了“ view”文件夾,並且.php(因此/view/approval/file/thisfile.php變為/approval/file/thisfile )。

但是,用於儀表板的完全相同的代碼和結構不僅不起作用,而且傾向於添加.php。 因此,/ /view/dashboard/file/managethis.php變為/ /view/dashboard/file/managethis\\/.php/ (在轉義/view/dashboard/file/managethis\\/.php/轉義)

所有URL都在一個單獨的文件夾“ view”中,並且所有.php都已刪除。 如何在一個RewriteRule中執行此操作,而不必重寫每個文件夾?

除了在正則表達式中使用[^/]+ ,還不需要在右手轉義點而不是.*

ErrorDocument 404 /404.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule  - [L]

RewriteRule ^dashboard/([^/]+)/([^/]+)/[0-9]/?$ /view/dashboard/$1/$2.php [NC,L,QSA]
RewriteRule ^dashboard/([^/]+)/([^/]+)/?$ /view/dashboard/$1.php?id=$2 [NC,L,QSA]
RewriteRule ^dashboard/([^/]+)/?$ /view/dashboard/$1.php [NC,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM