繁体   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