Проблема c Rewrite Rule

chaser
На сайте с 03.08.2005
Offline
198
791

Есть сайт, URL у него задаются так

- test1.ru/index.php?page=company

- test1.ru/index.php?page=company-test

- test1.ru/index.php?page=company/news

- test1.ru/index.php?page=company/news-test

- test1.ru/index.php?page=company/news&day=20100412

- test1.ru/index.php?page=company/articles&art=test

- test1.ru/index.php?page=company/articles&art=my-test

- test1.ru/index.php?page=company/articles-qaz&art=test

- test1.ru/index.php?page=company/articles-qaz&art=my-test

Используя Rewrite Rule должно работать так

- test1.ru/company.html

- test1.ru/company-test.html

- test1.ru/company/news.html

- test1.ru/company/news-test.html

- test1.ru/company/news-day-20100412.html

- test1.ru/company/articles-art-test.html

- test1.ru/company/articles-art-my-test.html

- test1.ru/company/articles-qaz-art-test.html

- test1.ru/company/articles-qaz-art-my-test.html

Есть правило, но работает только для первых 5-х строк:

RewriteRule ^([a-z/]+)[/-]([a-z]+)-([0-9]+)\.html index.php?page=$1&$2=$3 [L]

Как сделать чтобы корректно обрабатывались и остальные 4?

Заранее благодарен.

chaser добавил 01.05.2010 в 21:42

С одной стороны проблему решил

RewriteRule ^([a-z/]+)[/-]([a-z]+)-([a-z0-9]+)\.html index.php?page=$1&$2=$3 [L]

Однако в этом случае это место "company/articles-qaz&art" - articles-qaz - должно писаться слитно, без "-" иначе работать не будет.

Но теперь в этом случае не работает например такой путь (с дефисом): test1.ru/contacts/e-mail.html

SiteAnalyzer ( https://site-analyzer.ru/ ) - Бесплатный аналог Screaming Frog | Форум поддержки ( https://forum.site-analyzer.ru/ ) / Telegram ( https://t.me/siteanalyzer ) | Majento ( https://majento.ru/index.php?page=seo-analize ) - 70+ бесплатных сервисов SEO-аналитики
Qinghua
На сайте с 01.09.2009
Offline
103
#1

Тут надо писать отдельные правила для каждой категории, чтобы по ключевым словам определо.

и

- test1.ru/index.php?page=company/articles-qaz&art=test

лучше переделывать в

- test1.ru/articles-qaz/test.html

а то у вас там месиво из / и - сложно разобрать.

chaser
На сайте с 03.08.2005
Offline
198
#2

Я думаю для тех кто разбирается это не особо сложно, просто хотелось бы одним правилом на все.

ewg777
На сайте с 04.06.2007
Offline
225
#3
chaser:
Я думаю для тех кто разбирается это не особо сложно, просто хотелось бы одним правилом на все.

Хоть половиной.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
chaser
На сайте с 03.08.2005
Offline
198
#4
ewg777:
Хоть половиной.
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Я так понимаю структура требуемая мной не сохранится, а нужно как у меня а примере.

chaser добавил 02.05.2010 в 19:06

Посоветовали такую конструкцию

# сначала ищем где два слеша и потом переменные

RewriteRule ^([a-z]+)/([a-z\-]+)/([a-z]+)-([a-z0-9\-]+)\. html index.php?page=$1&$2=$3 [L]

# потом где в переменных дефис

RewriteRule ^([a-z]+)/([a-z\-]+)-([a-z]+)-([a-z0-9\-]+)\. html index.php?page=$1&$2=$3 [L]

# и наконец все остальное

RewriteRule ^([a-z/]+)[/-]([a-z]+)-([a-z0-9\-]+)\.html index.php?page=$1&$2=$3 [L]

но вот что получается на выходе:

test1.ru/uslugi.html – работает

test1.ru/company/news.html – работает

test1.ru/product/alum-konstr.html – не работает

test1.ru/company/news/day-20100412.html – не работает

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий