2016-10-04 3 views
0

Я написал приложение, используя ZF2, и в конце проекта я использую некоторые правила перезаписи htaccess, которые позволяют мне удалить ключевое слово public из URL-адреса приложения. Я нашел это правило в интернет-учебнике, и он отлично работает, но я попытался добавить свои собственные сопоставления, и они не работают. Вот мой .htaccess содержимое файла:Zend Framework 2 Mod Переписать в htaccess не работает

RewriteEngine On 

RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index [NC,L] 

Я пытался добавить правилу

RewriteRule ^test-test-test-test-providers$ /providers?localisation=$2&serviceType=$4 [NC,L] 

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

ответ

0

Вы пробовали добавлять в общественном Dir:

RewriteRule ^test-test-test-test-providers$ /public/providers 
+0

Привет, Андрей, спасибо за ваш ответ. Да, я попытался добавить '/ public /' в отображение, но он все еще не работает. –

0

Есть ли причина, почему вы удаляете общественность через Htaccess? Предпочтительным решением является установка основной директории вашего домена в общую папку, как описано в https://framework.zend.com/manual/2.4/en/ref/installation.html - есть также предложение для файла htaccess. Но это не обязательно, когда текущие настройки также работают.

Zend сообщает мне, что запрашиваемый URL не найден в картографировании Это важно. Я предполагаю, что вы имеете в виду, что ошибка исходит из Zend Framework (Zend - это только компания, это может быть Zend). Это означает, что ваш запрос отправляется непосредственно в Zend Framework. Не лучше ли использовать ваш маршрут непосредственно в конфигурации маршрута, а не переназначать его с помощью правил htaccess?

Возможно, если Zend Framework по-прежнему использует «test-test-test-test-providers» для его маршрутизации. Если это так, вы должны использовать его в своей конфигурации маршрутизации или проверить перенаправление вместо RewriteRule; но это означает, что «тест-тест-тест-тест-провайдеры» в URL-адресе будут заменены «поставщиками».

+0

Привет, av3, ваша идея очень проста, и я, вероятно, сделаю это по-своему, но моя цель состояла в том, чтобы сделать сопоставление через файл htaccess :) –

+0

Другим способом сделать это через htaccess был бы Redirect (301), но я предполагаю, что вы хотите держите «test-test-test-test-providers» в своем URL-адресе. Проблема может заключаться в том, что маршрутизатор использует URL-адрес, и URL-адрес не изменяется после перезаписи. Именно по этой причине маршрутизатор дает вам ошибку, что URL-адрес не может быть найден в вашем сопоставлении. Но я не уверен; может быть полезно для отладки и проверки того, какой URL-адрес использует Маршрутизатор. – av3

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