我需要创建以下规则以放置在我的 .htaccess 中
假设 .htaccess iw 放在 http://domain/folder
当用户打开 url http://domain/folder/Subfolder/xxx.html
他应该从 http://domain/folder/subdir/Subfolder/xxx.html 收到文件
所以这些规则必须考虑在 subdir 中有子文件夹的事实。
(子文件夹的不同结构:-)
并且仅当 subdir 下的路径不存在时,才应将请求转发到 index.php
请帮忙:)
ps 这是我上一个问题的后续问题。这是完全不同的,包括在 subdir 中有子文件夹的事实。
-> mod_rewrite: How to search in local folder, subfolder and then redirect to index.php
最佳答案
这应该这样做:
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} ([\w]+\.[\w]+)$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1 -f
RewriteRule ^ /%1 [NC,L]
RewriteCond %{DOCUMENT_ROOT}/subdir%{REQUEST_URI} -f
RewriteRule ^ /subdir%{REQUEST_URI} [L]
RewriteRule ^ /index.php [L]
稍作优化的更新。
RewriteEngine on
#RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^[^/]+\.[^/]+$ - [NC,L]
RewriteCond %{REQUEST_FILENAME} (.*/)([\w]+\.[\w]+)$ [NC]
RewriteCond %1subdir/%2 -f
RewriteRule ^ subdir/%2 [L]
RewriteRule ^ index.php [L]
更改日志:
下面将检查文件是否存在于当前目录中。
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^[^/]+\.[^/]+$ - [NC,L]
捕获 %1 中的当前目录和 %2 中的 file.ext
关于.htaccess - mod_rewrite : Redirect request to subdir with many subfolders of different structures + redirect to index. php,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9330058/