【问题标题】:htaccess rewriting with url removalhtaccess 重写与 url 删除
【发布时间】:2012-01-17 14:22:23
【问题描述】:

我正在尝试将来自/bar/baz 的请求转发到/web/index.php/bar/baz,这样您就不必在URL 中使用那个“web”文件夹。到目前为止我有/.htaccess:

RewriteEngine On
RewriteRule ^(.*)$ web/index.php [QSA,L]

它的问题是现在对/controller/action/ 的请求会导致错误:

找不到“GET /web/controller/action”的路由

这背后的框架无所谓,重点是应该是controller/action,URL中没有额外的“web”。

【问题讨论】:

  • 是的,哦yes框架确实很重要,因为它可以进行重定向(Wordpress 在某些配置上会这样做,Drupal 也是如此,Joomla 也是如此)。所以你必须明确哪个框架、用户应该输入什么 URL 以及应该如何在服务器端进行内部修改。
  • 很抱歉我那么直截了当,但是在没有提供足够信息的情况下寻求帮助有时......令人沮丧。
  • @OlivierPons 我不确定我还能说什么?这完全是关于.htaccess 和 URL 重写。将/web/bar 重写为/bar,使请求URL 不包含web 部分。现在它会这样做,但 REQUEST_URI 仍然包含“网络”。

标签: apache .htaccess url-rewriting


【解决方案1】:

用这个更改您的 .htaccess 代码:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteRule ^(?!web/index\.php|controller/)(.*)$ web/index.php/$1 [QSA,L,NC]

除了以/controller/web/index.php 开头到/web/index.php 之外的所有请求,此规则将在内部重定向所有请求。

【讨论】:

    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 2016-01-02
    • 2014-10-06
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多