有些网址如下
1)https://localhost/asset/uploads/folder/pictures/students/thumbnails/1537956127.png?1537955969
2)https://localhost/asset/uploads/folder1/pictures/bus/thumbnails/1537956127.png?1537955969
3)https://localhost/asset/uploads/folder2/pictures/monitor/thumbnails/1537956127.png?1537955969
如果任何URL不包含学生作为子文件夹,我需要在上传文件夹后重定向到特定文件夹。
例如2和3应该是
2)https://localhost/asset/uploads/new_folder/pictures/bus/thumbnails/1537956127.png?1537955969
3)https://localhost/asset/uploads/new_folder/pictures/monitor/thumbnails/1537956127.png?1537955969
从 folder1 和 folder2 到 new_folder
如何使用.htaccess的RewriteCond和RewriteRule有效地实现它?
答案 0 :(得分:0)
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/students/
RewriteRule ^uploads/(.*)/pictures/(.*)$ /uploads/new_folder/pictures/$2 [L]
这应该可以解决问题。
首先,我们启用重写引擎,并将基数设置为url的/-开始。
然后我们说,如果在原始位置找不到folder or filename
,并且该URL在我们要重写的路径中的任何地方都没有学生。
然后将folder1编辑为new_folder。
在这种情况下,由于是重写而不是重定向,因此,当显示的文件位于服务器上的folder1
时,客户端将看不到重写,并且仍会在URL中看到new_folder
我已经编辑了答案,因此folder1可以是动态的。我在这里假设您始终在路径中使用上传和图片。