Назад | Перейти на главную страницу

использование mod_rewrite для красивого конфликта URL-адресов

У меня есть 2 страницы для страниц профиля участников и страниц профиля компаний, для участников URL должен быть: site.com/users/USER_ID для компаний URL должен быть: site.com/COMPANY_ID

У меня это в моем .htaccess:

#Members Profile Page
RewriteRule ^users/(.*)$ modules/members/members_profile.php?id=$1
RewriteRule ^users/(.*)/$ modules/members/members_profile.php?id=$1

#Companies Profile Page
RewriteRule ^(.*)$ modules/companies/companies_profile.php?id=$1
RewriteRule ^(.*)/$ modules/companies/companies_profile.php?id=$1

Но эти 2 правила конфликтуют, что приводит к тому, что страница пользователя также переходит на companies_profile.php так как правило для компаний также содержит страницу профиля пользователя в адресе.

ОБНОВИТЬ: Я также использовал [L] флаг, не работает ...:

#Members Profile Page
RewriteRule ^users/(.*)$ modules/members/members_profile.php?id=$1 [L]
RewriteRule ^users/(.*)/$ modules/members/members_profile.php?id=$1 [L]

#Companies Profile Page
RewriteRule ^(.*)$ modules/companies/companies_profile.php?id=$1
RewriteRule ^(.*)/$ modules/companies/companies_profile.php?id=$1

Тем не менее, он загружается companies_profile.php для URL-адресов типа /users/etc..

Как я мог это решить?

Спасибо за любую помощь

Здесь это работает (/ в начале) - в соответствии с опубликованным вами URL-адресом это будет делать то, что вы хотите.

#Members Profile Page
RewriteRule ^/users/(.*)$ modules/members/members_profile.php?id=$1 [L]
RewriteRule ^/users/(.*)/$ modules/members/members_profile.php?id=$1 [L]

#Companies Profile Page
RewriteRule ^/(.*)$ modules/companies/companies_profile.php?id=$1
RewriteRule ^/(.*)/$ modules/companies/companies_profile.php?id=$1

То, что вы написали, не работает, потому что "^ user /" никогда не соответствует. Ваш URL-адрес - "/ user /". ^ означает начало строки. Итак, у вас есть не «начало строки, пользователь», а скорее «начало строки, /, пользователь».