У меня есть файл с таким же именем, которое существует в 15 подкаталогах. Скажем, это называется blah.txt
.Apache rewrite 1 файл глобально в новый файл URL
Я ищу глобальную переписку в пределах httpd.conf
, чтобы соответствовать любому подкаталогу blah.txt
и переписать его в единственное число http://myserver/blah.txt
.
Если я добавлю следующее к .htaccess
, он отлично работает. Я попал в txt-файл подкаталога, и меня переправили 301. Однако это означает, что мне нужно управлять 15 .htaccess. Я пытаюсь избежать этого.
RewriteEngine On
RewriteRule ^(blah)\.txt http://myserver/blah.txt [L,R=301]
Если я ставлю этот же текст в httpd.conf в разделе <Directory />
, я получаю 404 на подкаталог blah.txt
.
<Directory />
Options All Indexes FollowSymLinks
AllowOverride All
Allow from all
RewriteEngine On
RewriteRule ^(blah)\.txt http://myserver/blah.txt [L,R=301]
</Directory>
Как я могу получить этот глобальный матч в пределах httpd.conf
?
Edit: Если изменить httpd.conf
переписывают на ниже, похоже, он хочет работать, однако я застрять в бесконечном цикле, потому что он постоянно соответствие такое же имя файла.
RewriteEngine On
RewriteRule blah.txt http://myserver/blah.txt [L,R=301]
Все еще ищут способ сопоставить его в подкаталогах и перенаправить на одно и то же имя файла.
Редактировать 2: Я думаю, что получил эту работу, но мне бы понравилось подтверждение!
Я добавил RewriteCond
в свое правило. В принципе, я думаю, это означает, что если URI не содержит «прошивку», перепишите.
<Directory />
Options All Indexes FollowSymLinks
AllowOverride All
Allow from all
RewriteEngine On
RewriteCond %{REQUEST_URI} !(firmware) [NC]
RewriteRule blah.txt firmware/series/version/blah.txt [R=301,L]
</Directory>
Это, кажется, работает без зацикливания