【问题标题】:How do i rewrite url (deleting 2folders and 1 get parameter) without redirection?如何在不重定向的情况下重写 url(删除 2 个文件夹和 1 个获取参数)?
【发布时间】:2016-04-14 14:57:19
【问题描述】:

我正在尝试重定向动态创建的页面。

我的 mvc 模型强迫我有这种 url:
localhost/page/page_id?id=1
本地主机:网站网址
页面:控制器
page_id : 动作
id=1 : 参数

我想要这种网址:
本地主机/1
换句话说,删除除“id”参数值之外的所有内容。 我该怎么做?

我已经尝试了一些代码,但它每次都会重定向我。

我当前的htaccess(根目录):

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^page/(.*)$ /$1 [L,R=301]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ /index.php [L]

当我输入http://localhost/page/page_id?id=1 时,我会降落在那里:
http://localhost/page_id/id=1 出现错误:“控制器不存在”,导致 url 被重定向。

我错过了什么?

提前致谢!

【问题讨论】:

  • 能有除page以外的控制器或除page_id以外的任何动作吗?
  • 当然我有一些我正在使用的控制器。我只需要这个特定网址的重写网址

标签: apache .htaccess redirect mod-rewrite


【解决方案1】:

你可以试试这些规则:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(\d+)/?$ page/page_id?id=$1 [L,QSA]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule . index.php [L]

【讨论】:

  • 网址没有改变...我已经激活了apache重写模块所以我不明白为什么...
  • 好吧,我不明白...谢谢,当我输入 localhost/page/page_id?id=1 时回答你,它仍然有效,但是当我输入 localhost/1 时,我仍然有一个“找不到控制器错误”因为我的index.php一直认为url中的第一个参数是控制器。
  • ok "controller not found error 实际上是您的 index.php 问题。在 index.php 代码中使用 $uri = $_SERVER["REDIRECT_URL"] . '?' . $_SERVER["QUERY_STRING"]; 形成您的实际路由器 URI
  • 你是个天才...非常感谢,它完美运行!
猜你喜欢
  • 2020-02-22
  • 2013-12-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
相关资源
最近更新 更多