mod_rewrite для двух разных страниц - PullRequest
0 голосов
/ 04 июля 2011

У меня есть две страницы:

categories.php 

на странице category.php Я выбираю все категории.

news.php

на странице новостей Я получаю новости по идентификатору.

Я использовал mod_rewrite для категорий:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-/]+)$ categories.php?url=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ categories.php?url=$1

site/categori1 ----> this rule works for categorie page

Возможно ли открыть mod_rewrite для двух разных страниц? (Categories.php и news.php)

RewriteRule ^ ([a-zA-Z0-9 - /] +) $ news.php? url = $ 2 RewriteRule ^ ([a-zA-Z0-9-/] +) / $ new.php? url = $ 2

Правило site / news-title1 выше не работает для страницы news.php.

Как я могу использовать mod_rewrite для двух разных страниц?Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

www.site.com/news-title1 и www.site.com/category1 в основном совпадают с одинаковыми URL-адресами, и поэтому mod_rewrite не может окончательно решить, куда перенаправить. Я предложу следующее в дополнение к тому, что у вас уже есть:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news-([a-zA-Z0-9-/]+)/?$ news.php?url=$1 [L,NC,QSA]
RewriteRule ^([a-zA-Z0-9-/]+)/?$ categories.php?url=$1 [L,NC,QSA]

Теперь URI типа www.site.com/news-some-title будет перенаправляться на www.site.com/news.php?url=some-title ( все, что начинается с news-)

и URI типа www.site.com/some-category будут перенаправлены на www.site.com/category.php?url=some-category

2 голосов
/ 04 июля 2011

Вы должны быть более точными с тем, что соответствует регулярному выражению:

'^ ([a-zA-Z0-9 - /] +) $' будет соответствовать почти все.

Вам нужно решить, что отличает страницу категории от страницы новостей, и сопоставить ее, например:

RewriteRule ^category/([a-zA-Z0-9-/]+)$ categories.php?url=$1
RewriteRule ^category/([a-zA-Z0-9-/]+)/$ categories.php?url=$1
RewriteRule ^news/([a-zA-Z0-9-/]+)$ news.php?url=$1
RewriteRule ^news/([a-zA-Z0-9-/]+)/$ news.php?url=$1

Вы можете дифференцировать правила другим способом, но вы делаетенужно сделать это.

Вы можете, например, изменить правила, изложенные в моем предложении выше, чтобы правило категории перехватывало все, что не имеет префикса новостей:

RewriteRule ^news/([a-zA-Z0-9-/]+)$ news.php?url=$1
RewriteRule ^news/([a-zA-Z0-9-/]+)/$ news.php?url=$1
RewriteRule ^([a-zA-Z0-9-/]+)$ categories.php?url=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ categories.php?url=$1
...