проблемы с «переписать» в apache2 - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть следующий список URL для перезаписи:

1 написать URL
/ Продукция / клиент /

отправить
/basedir/system/index.php?client=cliente

2 написать URL
/product/client/index.php

отправить
/basedir/system/index.php?client=cliente

3 написать URL
/products/client/image/dir2/myimage.jpg

отправить
/basedir/system/image/client/dir2/myimage.jpg

4 написать URL
/products/client/image/dir2/more_x_dir/other.img

отправить
/basedir/system/image/client/dir2/more_x_dir/other.img

С этими правилами я более или менее решил пункты 1 и 2:

 RewriteEngine On

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

 RewriteRule ^product/([a-zA-Z]+)$ /basedir/system/index.php?client=base=$1 [L,QSA]
 RewriteRule ^product/([a-zA-Z]+)/$ /basedir/system/index.php?client=base=$1 [L,QSA]
 RewriteRule ^product/([a-zA-Z]+)/(.*)$ /basedir/system/index.php?client=$1 [L,QSA]

Моя проблема в случаях 3 и 4, когда у меня есть файлы с css / image's / js. а также, когда у меня много каталогов, может случиться так, что в случае многих каталогов нужно будет создать правило для всех, но я не знаю как.

большое спасибо

Редактировать

мое решение основано на принятом ответе:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^product/([a-zA-Z]+)/(.*)\.(gif|jpg|ico|css|js|txt|zip|xls|doc)$ /basedir/system/$2.$3 [L,QSA]
RewriteRule ^product/([a-zA-Z]+)$ /basedir/system/index.php?database=$1 [L,QSA]
RewriteRule ^product/([a-zA-Z]+)/$ /basedir/system/index.php?database=$1 [L,QSA]
RewriteRule ^product/([a-zA-Z]+)/index.php$ /basedir/system/index.php?database=$1 [L,QSA]
RewriteRule ^product/([a-zA-Z]+)/(.*)$ /basedir/system/$2?database=$1 [L,QSA]

1 Ответ

0 голосов
/ 03 сентября 2010

Я полагаю, что вы хотите сделать что-то вроде следующего, основываясь на вашем описании (я все еще немного озадачен правилами, которые у вас есть в настоящее время). Я также предполагаю, что у вас есть папки с именами image, css и js для каждого клиента.

RewriteEngine On

# Rewrite images/css/js to their real files
RewriteRule ^products/([^/]+)/(image|css|js)/(.*)$ /basedir/system/$2/$1/$3 [L]

# Rewrite everything else to the index.php script
RewriteRule ^products/([^/]+)(/.+)?$ /basedir/system/index.php?client=$1 [QSA,L]
...