2015-09-18 1 views
1

У меня есть файл с таким же именем, которое существует в 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> 

Это, кажется, работает без зацикливания

ответ

0

По моему Edit 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> 

После довольно много испытаний, это, кажется, работает без зацикливания