【问题标题】:How to mask the URL with htaccess in zend framework 1.10如何在 zend 框架 1.10 中使用 htaccess 屏蔽 URL
【发布时间】:2014-01-09 20:45:00
【问题描述】:

您好,我必须创建类似于“http://www.contract.com/user/profileview/index/MQ==”到“http://www.contract.com/profile/india/MQ==”的 URL。我们已经尝试使用 codeignitor 进行屏蔽并成功。但是来到 Zend 时,它会抛出错误“指定的控制器无效(印度)”。

我们已重写 htaccess 规则以在 codeignitor 中屏蔽 URL。同样适用于此处,但在这里不起作用。我的 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]

这有什么问题?我们尝试了很多类型的选项。但一切都白费了。您可以在代码中看到所有这些不同的尝试。请帮帮我。

提前致谢。

【问题讨论】:

标签: php apache .htaccess zend-framework mod-rewrite


【解决方案1】:

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

上面的url可以在htaccess中重写

方法一; RewriteRule ^profile/(.*)$ redirectedUrl.php [NC,L]

redirectedUrl.php作为页面,应该放在根目录下,不能报错,关于修改htaccess中的url!!!

方法2; 处理 bootstapper.php 以重定向到某个控制器并使用另一个操作

Zend_Controller_Router_Route_Regex

【讨论】:

  • 就像你在方法一中所说的,如果我在根目录中使用redirectUrl.php 并从htaccess 中指向该页面,则会将该页面重定向到该URL。我希望将我的页面重定向到该页面,但浏览器中的 URL 应类似于“contract.com/profile/india/MQ==>”。
【解决方案2】:

感谢您的支持。我以其他方式实现了目标。我们已根据需要更改了 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 做了很多更改,但最终所有这些努力都变得疯​​狂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多