Руководство по перезаписи и созданию URL - PullRequest
2 голосов
/ 31 августа 2011

Я собираюсь попытаться написать сценарий обмена фотографиями и сценарий / переписать, который преобразует числа в описательные имена.У меня есть смутное представление о том, как это сделать, поэтому я искал некоторые общие комментарии / рекомендации.

Проблема 1: Мне нужен источник URL для фотографии, которая хранится над моим корневым каталогом,Я планирую добавить имя фотографии (которая хранится в моей базе данных) к моему URL в виде строки запроса, например: www.mywebsite.com/getphoto.php?12_3.jpg, а затем написать скрипт php (getphoto.php)которая занимает часть после '?'и получает эту фотографию сверху корня.

Имеет ли это смысл и будут ли какие-либо вопросы для рассмотрения?

Проблема 2: Я хочу преобразовать число в конце моего URL-адреса вописательное имя (т.е. при вводе в facebook.com/4 отображается facebook.com/zuck).Я не совсем уверен, что это лучший способ сделать это, и надеялся получить руководство, чтобы двигаться в правильном направлении.

Спасибо!

1 Ответ

4 голосов
/ 31 августа 2011

Для проблемы 1: простое переписывание может справиться с этим, вам нужно использовать флаг [QSA].Примерно так:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^.*\.(jpeg|jpg|gif|png|bmp)$
RewriteRule ^(.+)$ /getphoto.php?photo=$1 [L,QSA]

Это будет перезаписывать за кулисами URL http://mywebsite.com/12_3.jpg в http://mywebsite.com/getphoto.php?photo=12_3.jpg Обратите внимание, что при 3-м условии перезаписи URI должен заканчиваться расширением изображения,это может вам не понадобиться.

Для проблемы 2 это зависит от того, как что-то вроде «4» отображается на «zuck».Если вы собираетесь жестко закодировать их в конфигурацию apache, вы можете использовать RewriteCond:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/4$
RewriteRule ^.*$ /zuck [L]
RewriteCond %{REQUEST_URI} ^/5$
RewriteRule ^.*$ /mark [L]

и т. Д.(или замените [L] на [R,L] для перенаправления вместо перезаписи, или просто используйте Redirect)

Redirect /4 /zuck
Redirect /5 /mark

и т. д.

Если отображение хранится в базе данных,вам нужно будет делать это динамически, возможно, как скрипт php для перенаправления, используя что-то похожее на проблему 1. Правило перезаписи переписывает что-то вроде /redirect.php?id=$1, а ваш скрипт redirect.php будет принимать id ивыполните поиск в базе данных, чтобы узнать, куда перенаправить браузер.

...