【问题标题】:codeigniter rewrite url get method(url friendly)codeigniter 重写 url 获取方法(url 友好)
【发布时间】:2014-10-02 20:18:44
【问题描述】:

我正在尝试在使用 get 方法时重写 codeigniter url。 我为我的项目(一家商店)编写了一个搜索引擎,它运行良好,但对 url 不是很友好。 当前网址是:

shopping/search?query=cat

shopping是controller,search是method,query是被搜索到的get参数,本例中是cat。

我想要改变的是让网址看起来像这样:

shopping/search/cat

我一直在尝试以多种方式使用 .htaccess,但没有成功。这是我的 .htaccess:

<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine on

# Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

【问题讨论】:

  • 您只是在寻找.htaccess 解决方案吗?难道你不能修改搜索方法以在url中查找查询字符串而不是$_GET吗?应该像function search($query){...} 一样简单
  • 我没有使用 $_GET 我正在使用 codeigniter 获取输入。你能告诉我一个例子,说明我如何在没有 get 方法的情况下“捕捉”搜索输入吗?因为如果我有一个搜索表单,我必须通过 post 或 get 发送它。

标签: php .htaccess codeigniter codeigniter-url


【解决方案1】:

试试这个:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/shopping/search/?$
RewriteCond %{QUERY_STRING} ^query=([^&]+)$
RewriteRule . /shopping/search/%1? [R=302,L]

Options +FollowSymLinks
RewriteEngine on
# Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

如果您想要永久重定向,请替换为以下内容:

RewriteRule . /shopping/search/%1? [R=301,L]

【讨论】:

  • 我尝试将它添加到我的 .htaccess 文件的末尾,但它根本没有做任何更改。
  • 刚刚编辑了答案。在顶部添加了 RewriteEngine On。尝试这个。如果它仍然不起作用,则将代码放在文件的顶部。希望您正在更改根 .htaccess 文件。
  • 还是一样..不用担心,我已经检查了 3 次,这是我的根 .htaccess 项目。
  • 嘿@user3460046,刚刚修改了上面的答案,有一些错误。请试试这个,这应该可以。在我的本地机器上测试。
  • 您好 ankitsnghn,感谢您的帮助,但仍然无法正常工作。我试图把它放在我原来的 .htaccess 之前,之后和更多的方式,但它不起作用。你能告诉我在你的本地机器上工作的代码吗?也许我还需要更改其他内容才能使其正常工作?这是我尝试编写它的示例之一:pastebin.com/u2LgH7nd
猜你喜欢
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2013-10-09
  • 1970-01-01
相关资源
最近更新 更多