Как я могу использовать mod_rewrite для отправки определенных типов входящих URL-адресов в определенный файл на сервере?Использование Apache mod_rewrite для отправки всех запросов в файл
В идеале любые запросы html загружали бы файл (например, /var/www/sites/urlprocessor.php), который затем определял бы, что запрашивается, и отображает соответствующий контент на основе URL-адреса.
Пример: Скажем, мне нужен URL-адрес, чтобы перечислить некоторые «автомобили». Я бы хотел, чтобы следующие URL-адреса загружали файл urlprocessor.php вместо загрузки фактической страницы и вместо того, чтобы делать перенаправление.
http://www.mydomain.com/cars.html --> /var/www/sites/urlprocessor.php
http://www.mydomain.com/cars.htm --> /var/www/sites/urlprocessor.php
http://www.mydomain.com/cars --> /var/www/sites/urlprocessor.php
С другой стороны, не HTML запросы (Jpgs, PDF-файлы и т.д.) будет продолжать нормально, без загрузки файла urlprocessor.php.
В настоящее время я использую последнюю строку кода для выполнения этого. Он 301 перенаправляет все запросы на страницу html в 'index.html', который затем загружает файл urlprocessor.php. Я предпочитаю просто загружать файл без перенаправления 301.
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^mydomain\.com
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
RewriteRule !^.*(\.gif|\.GIF|\.png|\.mp3|\.m3u|\.js|\.jpg|\.JPG|\.css|\.swf|\.flv|\.ico|\.wav|\.doc|\.DOC|\.pdf|\.PDF|\.xls|\.XLS|\.txt|\.TXT)$ index.html [L]
Есть ли способ перейти непосредственно к файлу без перенаправления?
Спасибо!
Том
Цените свою помощь. Вопрос о вашем значении корневого каталога. Будет ли это перенаправление на фактический файл в папке на сервере (полный путь = /var/www/sites/processor.php) или просто на файл в каталоге htdocs (http://www.mydomain.com/urlprocessor. PHP)? –
Prix, см. Мой отредактированный комментарий выше. Thnx. –
@TomS. вы можете перенаправлять только то, что находится в корневой папке виртуального хоста. Поэтому, если корневая папка виртуального хоста - '/ var/www /', вы можете использовать '/ sites/urlprocessor.php', и он будет использовать'/var/www/sites/urlprocessor.php', однако, если его файл за пределами корень тогда это не сработает. Чтобы использовать файл и/или папку, не находящуюся внутри виртуального хоста, вы можете попробовать использовать символическую ссылку, которую можно создать в linux с помощью команды 'ln -s/path/to/file/destination/filename', тогда вы сможете использовать файлы за его пределами, если у них есть надлежащее разрешение на его использование. – Prix