htaccess - 将多个文件重定向到子文件夹到父文件夹
htaccess - redirect multiples files into subfolders to parent folder
我想重写 url,像这样:
来自:
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
我的意思是,hide/remove view 文件夹和 (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 ^(.*)$ .php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /system/ [L,R=301]
我该怎么做?
好吧,假设你想得到 m1_file_02.php
然后你想得到 m2_file_02.php
服务器如何猜测您要向哪个确切的 file/folder 发送请求?
您必须为每个文件夹指定 唯一的 标识符。
无论如何,http://localhost/system/m?_file_01.php
它不能使用您提供的结构。
您可能需要为 modXXX
中的 3 个可能数字中的每一个设置不同的规则,因为您不能真正使用正则表达式进行字符串填充。像这样的东西可能有用,但我还没有测试过:
#match 1 digit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9])_.*\.php) view/mod00/ [QSA,L]
#match 2 digits
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9][0-9])_.*\.php) view/mod0/ [QSA,L]
#match 3 digits
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9][0-9][0-9])_.*\.php) view/mod/ [QSA,L]
我想重写 url,像这样:
来自:
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
我的意思是,hide/remove view 文件夹和 (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 ^(.*)$ .php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /system/ [L,R=301]
我该怎么做?
好吧,假设你想得到 m1_file_02.php
然后你想得到 m2_file_02.php
服务器如何猜测您要向哪个确切的 file/folder 发送请求?
您必须为每个文件夹指定 唯一的 标识符。
无论如何,http://localhost/system/m?_file_01.php
它不能使用您提供的结构。
您可能需要为 modXXX
中的 3 个可能数字中的每一个设置不同的规则,因为您不能真正使用正则表达式进行字符串填充。像这样的东西可能有用,但我还没有测试过:
#match 1 digit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9])_.*\.php) view/mod00/ [QSA,L]
#match 2 digits
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9][0-9])_.*\.php) view/mod0/ [QSA,L]
#match 3 digits
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (m([0-9][0-9][0-9])_.*\.php) view/mod/ [QSA,L]