2013-12-26 3 views
0

Привет, мне нужно создать URL-адрес примерно так: «http://www.contract.com/user/profileview/index/MQ==» на «http://www.contract.com/profile/india/MQ==». Мы пробовали маскировку с помощью codeignitor и преуспели. Но, придя к Zend, он выдает ошибку «Недопустимый контроллер указан (india)».Как замаскировать URL-адрес с htaccess в zend framework 1.10

Мы переписываем правила htaccess для маскировки URL-адреса в codeignitor. Здесь же применяется, но он здесь не работает. Мой код htaccess:

#php_value magic_quotes_gpc off 
RewriteEngine on 
Options -Indexes 
Options FollowSymlinks 
RewriteEngine On 
RewriteBase/

#Admin 
RewriteRule ^admin(.*)$ public_mvc/admin.php [L] 

#RewriteRule ^profile/(.*)/(.*)/(.*)(/|)$ user/profileview/index/$2 [L,NC] 

RewriteRule ^profile/(.*)/(.*)/(.*)(/|)$ user/profileview/index/$2 [L,NC] 

#RewriteRule ^profile/(.*)/(.*)/(.*)/?$ user/profileview/index/$2 [L,NC,QSA] 

# Also Tried Ones. Start 

#RewriteRule ^profile/(.*)/(.*)/(.*)/$ /user/profileview/index/$1 [NC,L] 
#RewriteRule ^profile/(.*)/(.*)/(.*)/?$ /user/profileview/index/$2 [NC,L] 
#RewriteRule ^profile/(.*)/(.*)/(.*) /user/profileview/index/$2 [NC] 
#RewriteRule ^/profile/(.*)/(.*)/(.*)/?$ /user/profileview/index/$2 [QSA] 

# Also Tried Ones. End 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ public_mvc/index.php 

Rewriterule ^$ /home [r=301,nc] 

Что случилось? Мы попробовали так много вариантов типов. Но все шло напрасно. Вы можете увидеть все эти разные попытки в коде. Пожалуйста, помогите мне это.

Заранее спасибо.

+1

Вы пытались использовать zend-маршрутизатор вместо htaccess? http://framework.zend.com/manual/1.12/en/zend.controller.router.html – PoulsQ

+0

Если вы используете маршрутизатор zend, он дает вам желаемый результат по умолчанию. – Mubo

ответ

0

"http://www.contract.com/profile/india/MQ=="

выше URL может быть ReWriter в Htaccess

метод 1; RewriteRule^Профиль /(.*)$ redirectedUrl.php [NC, L]

redirectedUrl.php как страница, он должен быть помещен в корневом каталоге, то косяк показывает ошибку, что касается изменения URL в HTAccess! !!

метод 2; обработки на bootstapper.php для перенаправления в какой-то контроллер с другим действием для использования

Zend_Controller_Router_Route_Regex

+0

Как вы сказали в методе один, если я использую redirectUrl.php в корневом каталоге и указываю, что страница из htaccess перенаправляет страницу на URL. Я хочу, чтобы моя страница была перенаправлена ​​на страницу, но URL-адрес в браузере должен выглядеть как «». – Kiran

0

Спасибо за поддержку. Я достиг своей цели каким-то другим способом. Мы изменили маршрутизацию ZEND в соответствии с нашими потребностями. Таким образом, у нас есть файл Auth (который вызывается в каждом запросе). Этот файл вызывается во всех запросах. Так что я сделал, я проверил URL-адрес, и если URL-адрес содержит имя модуля как «Профиль», то я установил имя модуля, контроллера и действия с помощью «setModuleName», «setControllerName», «setActionName» и т. Д.

$ModuleName = $request->getModuleName(); 
$ControllderName = $request->getControllerName(); 
$ActionName = $request->getActionName(); 

/* 
    This condition is added to mask the URL. This is added by Ghanta Kiran on 27-Dec-2013. Start 
    Example : (From) http://www.contractskills.com/profile/india/username/id ==> (To) http://www.contractskills.com/user/profileview/index/id 
*/ 
if($ModuleName == 'profile') 
{ 
$paramId = $request->getParam('id'); // This is to get the User Id from the URL, to fetch the user profile details. 
$request->setModuleName('user'); 
$request->setControllerName('profileview'); 
$request->setActionName('index'); 
$request->setParam('id',$paramId);   
} 

Так что это будет сделано, если URL-адрес содержит в нем «Профиль», он будет явно задавать модули, контролер, действия. Я сделал так много изменений в .htaccess, но в конечном итоге все эти усилия пошли в ярость.

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