我有以下代码,完美无缺,但我的问题是我不想在RewriteRule中硬编码的鸟类。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /birds/$1 [L,R=301]
我不想手动添加它,因为有许多文件夹,例如" birds"
示例:
这
http://domain.com/birds/x.html/
到
http://domain.com/birds/x.html
但在我的情况下它会返回
http://domain.com/x.html
答案 0 :(得分:1)
您可以从RewriteCond %{REQUEST_URI}
捕获完整的URI路径,而不是相对于当前目录的RewriteRule
:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(/.*)/$
RewriteRule /$ %1 [L,R=301,NE]
答案 1 :(得分:0)
你想要一个重写地图。
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewritemap
http://httpd.apache.org/docs/2.4/rewrite/rewritemap.html
然后你可以做以下
RewriteMap MyDirs "txt:/etc/apache2/mydirs.txt"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)/?$ /${MyDirs:$1/ [L,R=301]