Как переписать URL изображения, используя поле из базы данных MySQL в качестве нового URL? - PullRequest
1 голос
/ 20 августа 2010

В моей базе данных есть таблица с информацией о загруженных пользователем изображениях. Одним из полей является «слизняк». Скажем, пользователь загружает изображение с именем «46156142.jpg» и вводит слаг в виде «смайлика», я хочу иметь возможность указать на изображение, перейдя к «http://domain.com/smiley-face". Фактическое местоположение файл будет "http://domain.com/images/46156142.jpg".

Это вообще возможно? Я в основном пытаюсь повторить эффект слагов в Wordpress, за исключением реального файла изображения.

1 Ответ

3 голосов
/ 20 августа 2010

Да, это возможно, но не рекомендуется.Вам необходимо использовать файл .htaccess для маршрутизации всех данных, отправляемых по URL-адресам, которые являются слагами изображения, на страницу, которая считывает базу данных, ищет имя файла соответствующего слага и затем перенаправляет на это изображение.

Лучшеспособ будет переименовать файл, когда пользователь загружает файл в слаг.Когда пользователь переходит к слагу, вы можете использовать .htaccess, чтобы перехватить слаг и использовать слаг в качестве имени файла, поскольку поиск в базе данных не требуется.

После того, как вы переименовали файл так, чтобы он находился вhttp://domain.com/images/slug.jpg, вам нужно включить в ваш .htaccess следующее:

RewriteRule ^(.*)$ /images/$1.jpg [L]

Однако проблема, с которой вы столкнетесь, состоит в том, что, скорее всего, будет много URL-адресов в форме http://domain.com/anything/, которые вам не нужнысопоставить с изображением.Следовательно, было бы лучше сделать следующее:

RewriteRule ^image/(.*)$ /images/$1.jpg [L]

Это заставит использовать переход на http://domain.com/image/slug вместо http://domain.com/slug, но позволит избежать вышеуказанной проблемы.В качестве альтернативы вам придется создавать особые правила для любого конфликта, которого вы хотите избежать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...