【问题标题】:Presence or absence of leading "/" in a rewrite rule重写规则中是否存在前导“/”
【发布时间】:2014-05-09 18:20:19
【问题描述】:

我有一个链接结构损坏的 codeigniter 网站。初始页面正常加载。我的导航栏看起来像:

<a class="brand" href="#">myproject</a>
          <div class="nav-collapse">
            <ul class="nav">
              <li class="active"><a href="#">Home</a></li>
              <li ><a href="http://localhost/projectname/basecontroller/Facts">Facts</a></li>
              <li ><a href="http://localhost/projectname/basecontroller/about">About</a></li>
              <li ><a href="http://localhost/projectname/basecontroller/contact">Contact</a></li>
              <!--<li ><a href="http://localhost/projectname/basecontroller/privacy">Privacy</a></li>-->
            </ul>
          </div><!--/.nav-collapse -->

我已经在根目录下使用以下 .htaccess 文件在本地对其进行了测试:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L] 

这似乎通过转动来修复目录结构(我假设):

http://localhost/projectname/basecontroller/contact

进入:

http://localhost/projectname/index.php/basecontroller/contact

如果我将 .htacess 中的最后一行更改为:

RewriteRule ^(.*)$ /index.php/$1 [L]

它适用于我的生产服务器,但不适用于我的 wamp 本地

有人能解释一下前导“/”的意义吗?

【问题讨论】:

  • 您是指定 url(或域)作为您提供的示例(硬编码)还是使用一些辅助函数?
  • 这是 codeigniter,所以我使用 li>
  • 如果您的 htaccess 在 projectname 文件夹中并且您使用 index.php/$1 它将起作用,因为这意味着 in the same folder, use index.php。请注意,这与/projectname/index.php/$1 相同(您可以使用RewriteBase)。但是,如果您使用 /index.php/$1 这意味着 in the ROOT folder, use index.php 这就是为什么它不起作用(甚至奇怪的是它在您的产品上起作用)
  • 你能输入贾斯汀的答案吗?

标签: php .htaccess codeigniter


【解决方案1】:

试试这个: RewriteRule ^(.*)$ index.php?/$1 [L]

【讨论】:

  • Rahul,这可行,但并不能真正回答问题。 - 谢谢比尔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2019-08-19
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多