重定向到新目录的.htaccess似乎并不是最好的想法,因为此时需要至少8个不同的目录(和8个不同的重写规则)才能将20000个文件分割成最多包含2500个文件的目录。所以,明天将需要9个目录,而不是提及使用重写规则来选择转到每个目录的文件可能变得非常困难。
我想最好的选择是在PHP脚本中处理该路由,使用数组或任何需要的路由。
你可以重定向转到/images
目录PHP脚本中的根,例如,这反过来又重定向到相应的目录根据传递给脚本
像这样的参数的一切:
Options +FollowSymlinks
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_URI} !handler.php
RewriteCond %{REQUEST_URI} ^/images/([^\.]+)\.([\w]+)/? [NC]
RewriteRule .* handler.php?name=%1&ext=%2 [L]
地图默默:
http://example.com/images/filename.ext
带或不带斜线。
要:
http://example.com/handler.php?name=filename&type=ext
只传递一个参数到脚本,而不是或名称和扩展,只需更换这一个重写规则:
RewriteRule .* handler.php?%1.%2 [L]
这是只是一个例子。脚本handler
可以具有任何名称,如果使用的话,则可以使用密钥name
和type
。
必须保留传入的URL结构才能使规则集工作:URL内的最后一个字符串必须是该文件。
对于永久和可见重定向,请将[L]
替换为[R=301,L]
。
这是有道理的,我看到这可以工作 - 我可以试试这个。我只关心效率问题,因为处理程序可能会在单个页面载入中被调用数百次。不过,我还是看到了能够在处理程序文件中轻松更改规则的价值。 谢谢! – dragon1234
@Peter PHP通常比mod_rewrite规则更快,但在这种情况下,一堆规则太多而无法检查,所以对性能的影响应该更小,我猜。 –
你好@faa, 感谢您的全力帮助。 我该如何处理handler.php?我尝试了回声和回报,并没有真正的运气。 ' ' – dragon1234