внутреннее перенаправление в другой файл в Apache - PullRequest
0 голосов
/ 26 октября 2009

Я хочу, чтобы URL http://domain.com/sitemap.xml внутренне указывал на файл sitemap_book.xml в htdocs без каких-либо перенаправлений 301/302.

Пожалуйста, предложите правило перезаписи для того же самого.

Я придумал

  RewriteCond %{REQUEST_FILENAME} "sitemap.xml"
  RewriteRule ^(.*)$ sitemap_book.xml [R]

но это не работает без [R]. Дает 400 плохих запросов

Когда я использую [P], я получаю 502 Ошибка прокси. Я попытался настроить mod_proxy со следующим кодом

<IfModule mod_proxy.c>
ProxyRequests On

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
</IfModule>

Это дает 403 Запрещено.

1 Ответ

1 голос
/ 26 октября 2009

REQUEST_FILENAME всегда является абсолютным путем к файловой системе, а REQUEST_URI всегда является абсолютным путем URL-адреса. Таким образом, ваш пример скорее будет работать с RewriteCond %{REQUEST_URL} =/sitemap.xml (=: лексикографическое сравнение) или даже напрямую с шаблоном RewriteRule:

RewriteRule ^/sitemap\.xml$ sitemap_book.xml

Кроме того, флаг R всегда вызывает внешнее перенаправление, а не внутреннее. Так что просто оставьте это:

RewriteRule ^/sitemap\.xml$ sitemap_book.xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...