我希望重写网址,如下所示:
从:
http://localhost/system/view/mod001/m1_file_01.php (or any file inside mod001)
or
http://localhost/system/view/mod002/m2_file_01.php (or any file inside mod002)
要
http://localhost/system/m?_file_01.php
我的意思是,隐藏/删除视图文件夹和(mod001 | mod002 | mod003 | etc)文件夹,我还没有。
这是我的文件夹结构:
-system/
.htaccess
index.php
view/
mod001/
m1_file_01.php | m1_file_02.php | ...
mod002/
m2_file_01.php | m2_file_02.php | ...
media/
css/ | js/ | ...
这是我的.htaccess
RewriteEngine On
#RewriteBase / #Yeah is commented
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /system/ [L,R=301]
我怎么做?
答案 0 :(得分:1)
好的,让我们想象你想得到m1_file_02.php
,然后你想得到m2_file_02.php
服务器如何猜测您要发送哪个确切的文件/文件夹请求?
您必须为每个文件夹指定唯一标识符。
无论如何,http://localhost/system/m?_file_01.php
它无法使用您所提供的结构。
答案 1 :(得分:1)
您可能需要为modXXX
中的3个可能数字中的每一个使用不同的规则,因为您无法使用正则表达式真正地填充字符串。这样的事情可能有用,但我还没有测试过:
#match 1 digit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9])_.*\.php) view/mod00$2/$1 [QSA,L]
#match 2 digits
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9][0-9])_.*\.php) view/mod0$2/$1 [QSA,L]
#match 3 digits
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9][0-9][0-9])_.*\.php) view/mod$2/$1 [QSA,L]