有没有办法可以重写文件夹,以便该文件夹下的所有文件都遵循相同的规则?例如:
如果我有一个文件夹,其中包含5个php文件(a.php,b.php,c.php,d.php,index.php),我使用以下规则:
RewriteRule ^products/storage/?$ /content/products/storage/index.php [QSA,L]
有没有办法让我可以显示所有要访问的文件:site.com/products/apples/a.php,site.com/products/apples/b.php等,而不必为每个人写一条规则?
我尝试了以下但它没有用。
RewriteRule ^products/storage/?$ /content/products/storage/ [QSA,L]
我还需要它不要覆盖我的其他规则,例如:
RewriteRule ^products/storage/?$ /content/products/storage/product-name1/ [QSA,L]
RewriteRule ^products/storage/?$ /content/products/storage/product-name2/ [QSA,L]
任何想法?
答案 0 :(得分:2)
您的问题是正则表达式末尾的尾随$
。如果完整URI 与products/storage
(带有可选的尾部斜杠)完全匹配,则只允许匹配。相反,请尝试以下操作并注意缺少尾随的$
字符:
RewriteRule ^products/storage/? /content/products/storage/ [QSA,L]
这将匹配以products / storage开头的任何内容(带有可选的尾部斜杠)。或者,如果您想捕获并重复使用products/storage/
后面的URI中的所有内容,您可以尝试:
RewriteRule ^products/storage(/?.+)?$ /content/products/storage$1 [QSA,L]
<强>更新强>
如果您更新的问题建议,您是否需要保留其他RewriteRule
,则应该添加RewriteCond
条件,如下所示:
RewriteCond !^products/storage/?$
RewriteRule ^products/storage(/?.+)?$ /content/products/storage$1 [QSA,L]
RewriteCond
告诉RewriteRule
仅在不符合条件的情况下处理。