【问题标题】:How to do redirecting when a particular url is entered?输入特定网址时如何进行重定向?
【发布时间】:2012-04-09 17:51:20
【问题描述】:

我的 joomla 网站上有一个网址

http://www.mysite.com/index.php?option=com_content&view=frontpage&Itemid=3220

我的客户希望它被访问为

http://www.mysite.com/sales

我已经使用 mod_rewrite 来做到这一点,它工作正常。但我希望当用户进入时

http://www.mysite.com/sales

应该达到

http://www.mysite.com/index.php?option=com_content&view=frontpage&Itemid=3220

而不仅仅是显示该网址的内容。

【问题讨论】:

  • 为什么要重定向到基本 URL? Joomla 的 SEF 支持一旦启用(它以用户友好的方式自动执行 mod_rewrite),将执行路由。它不会重定向到非 SEF 版本,因为这会破坏对象。
  • @pharalia 需要为单个实例而不是每个 url 都这样做
  • @sushilbharwani 我不清楚这个 SEF is not enabled 吗?但是您的客户想要使用一个简短的 SEF 样式 url 重定向到正确的非 SEF URL?
  • @cppl 是的。如果您忘记了 sef 上下文(因为客户不理解它),只需将其视为更好地为他阅读 url。

标签: php mod-rewrite joomla


【解决方案1】:
  1. 在根目录下创建一个名为/sales/ 的目录
  2. /sales/内创建一个名为index.php的文件...
  3. 把这个放进去:

    Header( "HTTP/1.1 301 Moved Permanently" ); 
    Header( "Location: http://www.mysite.com/index.php?option=com_content&view=frontpage&Itemid=3220" ); 
    

然后:

  1. 删除您的 mod_rewrite 更改。
  2. 认真尝试让您的客户端更新到 1.5.25,因为自 1.5.10 代码库以来有很多安全修复程序。

【讨论】:

  • mod_rewrite 和 mod_redirect 有区别吗?
  • 这确实需要一个新问题,但很快:mod_rewrite 是一个更强大的灵活选项,而 [mod_redirect 不存在][1],Redirectmod_alias 的指令这要简单得多,但缺乏处理 URL 属性等的能力 - Redirect 通常是服务器上较轻的负载。 [1]:httpd.apache.org/docs/2.2/mod
【解决方案2】:

获取当前页面url,如果是sales,则用location header重定向

    function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

header("Location: http://www.mysite.com/index.php?option=com_content&view=frontpage&Itemid=3220");

所以:

$pageurl = curPageURL();

if ($pageurl == "http://www.mysite.com/sales") {
header("Location: http://www.mysite.com/index.php?option=com_content&view=frontpage&Itemid=3220");
}

【讨论】:

    【解决方案3】:

    我不知道 Joomla 的功能

    但对于一个普通的 php 应用程序,我会 在父文件夹中创建 .htaccess。并将所有调用重定向到单个文件(前端控制器设计模式)

    .htaccess 的内容是

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
    </IfModule>
    

    所有查询字符串都将在 $_GET['url']

    中可用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2013-09-10
      相关资源
      最近更新 更多