2015-06-09 5 views
2

Я пытаюсь создать дружественные для SEO URL-адреса для моего сайта, и я пришел к проблеме, которую я не могу решить. Я не могу понять, как настроить правило перезаписи, чтобы он показывался, например, следующим образом: www.mysite.com/shows/late-night и www.mysite.com/news/title-of-article. Вот мой файл .htaccess:.htaccess SEO Дружественные URL-адреса, не работающие с двумя параметрами

RewriteEngine on 
RewriteRule ^(.*)/([a-z_-]+) index.php?switch=$1&shows=$2 [NC,L] 
RewriteRule ^(.*)/([a-z_-]+) index.php?switch=$1&article=$2 [NC,L] 
RewriteRule ^shows/$ index.php?switch=shows [NC,L] 
RewriteRule ^articles/$ index.php?switch=article [NC,L] 

Правило переписывания работает, если я закомментировать первую и третью строчку, но как я так и будет работать.

ответ

1

1-е и 2-е правило не могут сосуществовать, поскольку они соответствуют одному и тому же шаблону URI. Только сначала будет все время. Tweak своих правил, как это:

RewriteEngine on 

RewriteRule ^(shows)/([a-z_-]+)/?$ index.php?switch=$1&shows=$2 [NC,L,QSA] 
RewriteRule ^(news)/([a-z_-]+)/?$ index.php?switch=$1&article=$2 [NC,L,QSA] 
RewriteRule ^(shows|news|articles)/?$ index.php?switch=$1 [NC,L,QSA] 
+1

Хех ninja'd ... Я удалю свой ответ;) – CD001

+0

Он по-прежнему работать, потому что это не распространяется имеют раздельные макеты страниц. Я меняю их с помощью оператора php switch. Проблема заключается в третьей строке RewriteRule^(показывает | новости | статьи) /? $ Index.php? Switch = показывает [NC, L, QSA], потому что она отображает только страницу показа, и если я изменю ее на статьи на странице показа не работает – Headpetrol

+0

см. обновленное правило. 2-е правило теперь использует 'switch = $ 1' – anubhava