2015-11-03 2 views
1

Результат мне нужно:Два RewriteRule ы не работает вместе

http://mywebsite.co/company.php?title=company-name 

должен выглядеть

http://mywebsite.co/company-name 

И таким же образом:

mywebsite.co/project.php?compname=compan-name&prjt=project-name 

должен выглядеть

mywebsite.co/company-name/project-name 

Это мой код:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /company.php 
RewriteCond %{QUERY_STRING} ^title=([A-Za-z0-9-]*)$ 
RewriteRule ^company\.php$ http://mywebsite.co/%1? [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /project.php 
RewriteCond %{QUERY_STRING} ^compname=([A-Za-z0-9-/]*)&prjt=([A-Za-z0-9-/]*)$ 
RewriteRule ^project\.php$ http://mywebsite.co/%1/%2? [L] 

Эти два правила работают, если они используются в индивидуальном порядке. Но если они используются вместе в одном файле, работает только одно правило (project.php). Требуется структура URL-адресов для второго правила (company.php), но контент пуст (макет сайта, верхний и нижний колонтитулы идут).

Любая помощь?

+0

Правила обрабатываются в порядке, чтобы использовалось последнее правило catchall. Что вы хотите показать в браузере? Кажется, вы пытаетесь пойти другим путем. –

+0

В результате мне нужно http://mywebsite.co/company.php?title=company-name должно выглядеть как http://mywebsite.co/company-name и таким же образом "mywebsite.co/project.php? compname = compan-name & prjt = имя-проекта "должно выглядеть так:" mywebsite.co/company-name/project-name "@PanamaJack – Kaka

+0

Это все еще не отвечает на мой вопрос. Вы хотите, чтобы сделать REDIRECT или вам нужен дружественный URL? Какую версию URL-адреса вы хотите отобразить в браузере? –

ответ

2

Это должно сделать трюк.

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteCond %{THE_REQUEST} ^GET\ /company\.php\?title=(.+) 
RewriteRule^%1? [R=301,L] 

RewriteCond %{THE_REQUEST} ^GET\ /project\.php\?compname=(.+)&prjt=(.+) 
RewriteRule^%1/%2? [R=301,L] 

RewriteRule ^([^/]+)/([^/]+)/?$ project.php [L] 
RewriteRule ^([^/]+)/?$ company.php [L] 

Дайте мне знать, как это работает.

+0

Можете ли вы объяснить, не работает? Что происходит? Дайте мне пример URL-адреса, который вы вводите в браузере. –

+0

Если я использую ваш код, Urls не перенаправляются, а контент также не отображается. – Kaka

+0

Итак, что происходит, когда вы вводите 'http: // mywebsite.co/company-name' –

0
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ company.php [L] 
RewriteCond %{QUERY_STRING} ^title=([A-Za-z0-9-]*)$ 
RewriteRule ^company.php$ http://mywebsite.co/%1 [2]? [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /project.php 
RewriteCond %{QUERY_STRING} ^compname=([A-Za-z0-9-/]*)&prjt=([A-Za-z0-9-/]*)$ 
RewriteRule ^project.php$ http://mywebsite.co/%1/%2 [3]? [L]' 

Я изменил свой код следующим образом. Это сработало. :)

Смежные вопросы