Для проблемы 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
ивыполните поиск в базе данных, чтобы узнать, куда перенаправить браузер.