【问题标题】:htaccess redirection in codeignitercodeigniter中的htaccess重定向
【发布时间】:2013-05-01 07:26:49
【问题描述】:

我的.htaccess 中有以下代码:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /annsenglishmediumschool
    RewriteCond %{HTTP_HOST} shops.annsenglishmediumschool.com
    RewriteRule .* http://annsenglishmediumschool.com/index.php/shops [L]    
</IfModule>

这很好用,但我怎样才能在这里将“商店”作为变量?意味着我们在“shops”位置输入的任何内容都应该在http://annsenglishmediumschool.com/index.php/ 之后。提前谢谢。

编辑: 编辑后我的.htaccess 看起来像这样:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /annsenglishmediumschool
    RewriteCond %{HTTP_HOST} ^(.+?)\.annsenglishmediumschool\.com$
    RewriteRule .* http://annsenglishmediumschool.com/index.php/%1 [L]
</IfModule>

问题是现在它只需要右边的“www”作为 annsenglishmediumschool.com/index.php/www ,没有其他字符串,非常感谢任何帮助

【问题讨论】:

  • CodeIgniter 和这个有什么关系?
  • IN codeigniter 我想在站点名之前捕获变量类型,这就是我的意思,就是 (anystring).mysite.com 到 mysite.com/mycontroller/myaction/(anystring)
  • 嗯,这是.htaccess,问题就在这里,并且您的 CodeIgniter PHP 部分(可能)正在工作。您想知道应该在 .htaccess 中而不是在 PHP 中放入什么来使其正常工作。

标签: php .htaccess codeigniter mod-rewrite url-rewriting


【解决方案1】:

您可以将感兴趣的域名部分截取为%1,并在RewriteRule中使用

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+?)\.annsenglishmediumschool\.com$
RewriteRule .* http://annsenglishmediumschool.com/index.php/%1 [R,L]

如果主机不是以www. 开头,这会抓取域(.+?) 的第一部分并将其作为%1 放入RewriteRule

当一切正常时,您可以将R 更改为R=301

从不在启用 301 的情况下进行测试,请参阅此答案 Tips for debugging .htaccess rewrite rules 了解详情。

【讨论】:

  • 当我输入 www.annsenglishmediumschool.com 时,它的权限为:annsenglishmediumschool.com/index.php/www 并且没有其他字符串在我输入 shop.annsenglishmediumschool.com 时使用比如 annsenglishmediumschool.com/index.php/shops。这就是问题
  • 任何解决方案。我卡住了
  • @Icecreamsandwich 你想在浏览器栏中看到新的 URL 吗?还是您想保留原始 URL 并只提供一些不同的内容?
  • 我想在浏览器栏中查看新网址
  • @Icecreamsandwich 那你不仅要重写还要重定向R
【解决方案2】:

我认为你混合了两件事。您可以将参数直接传递给您的控制器以获取“商店”作为变量。

例如:

index($variable){

echo $variable;

}

//它会在yoursite.com/index.php/shop上回显$variable(shop this time)

【讨论】:

  • 但它像子域,如果用户键入 subdomain.mysite.com 然后我想在我的控制器中捕获子域名,现在它是静态的并且只接受“商店”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 2013-07-02
  • 2014-03-13
相关资源
最近更新 更多