我需要创build以下规则放置在我的.htaccess中
什么是最好的方式来做到这一点。
感谢帮助 :)
ps第一点可以作为一个简单的解决scheme被淘汰。 所以如果用户inputurl /file.jpeg,服务器将会在/子文件夹中search这个文件,如果没有find这个文件,它会redirectrquest do index.php
我假设你的网址是这样的: somesite.com/subfolder/file.extension
。 如果URL不同,请提供详细信息。
将这添加到您的DocumentRoot
的.htaccess
。
Options +FollowSymLinks -MultiViews -Indexes RewriteEngine on RewriteBase / RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule ^ - [L] RewriteCond %{REQUEST_URI} ^/([\w]+)/([\w]+\.[\w]+)$ [NC] RewriteCond %{DOCUMENT_ROOT}/%2 -f RewriteRule ^ /%2 [NC,L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ - [L] RewriteRule ^ /index.php [L]
改为适合OP的要求。
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 %{REQUEST_URI} ([\w]+\.[\w]+)$ [NC] RewriteCond %{DOCUMENT_ROOT}/subdir/%1 -f RewriteRule ^ /subdir/%1 [L] RewriteRule ^ /index.php [L]
这只是ThinkingMonkey概述的补充。 正如我所评论的,%变量只在下一个 cond或规则上可用。 然而,规则$变量对于conds和规则替换字符串都是可用的,因此规则2应该被写为(关于使用DOCUMENT_ROOT的相同注意事项):
RewriteCond %{DOCUMENT_ROOT}/$1 -f RewriteRule \w+/(\w+\.\w+)$ $1 [NC,L]
或者如果你想做相反的事情
RewriteCond %{DOCUMENT_ROOT}/subdir/$1 -f RewriteRule (\w+\.\w+)$ subdir/$1 [NC,L]