Порядок правил важен - сейчас оба упомянутых URL будут обслуживаться по первому правилу, которое переписывает их в my-index.php
.
Ваше первое правило (для my-index.php
) слишком широкое - даже если вы разместите его в правильном порядке, оно все равно перепишет его на страницу my-index.php
- каквы сопоставляете все, используя .*
шаблон.
Учитывая вышеизложенное, попробуйте эти правила:
Options +FollowSymLinks
RewriteEngine On
# For Page URL http://www.domain.com/news/news-details.php
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^news/news-details\.php$ /my-news.php [NC,QSA,L]
# For Accessing Division Page http://user1.domain.com/news/news-details.php
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com [NC]
RewriteCond %{HTTP_HOST) !^www\.
RewriteRule ^news/news-details\.php$ /my-news.php?user=%1 [QSA,NC,L]
# For Accessing Users Page
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteRule ^$ /users.php?user=%1 [L]
# For www.domain.com it should go to my-index.php page
# (but only if requested resource is not real file)
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /my-index.php [L]
Что я сделал:
- переставлены правила: перемещено
my-index.php
на один шаг вниз; - добавлено условие, чтобы не переписывать запросы к существующим файлам (в противном случае
my-news.php
также будет перезаписано).
Эти правила могут все еще требовать доработки - я не знаю, какая у вас логика веб-сайта.