1

我目前有下面的代码将所有请求(文件除外)重定向到 index.php 不幸的是,由于当我的 url 以斜杠结尾时发生了一些奇怪的 mime 类型错误,我无法让我的脚本工作。

奇怪的是,我的代码输出与两个 url 相同,但错误仅出现在 / 结尾。

所以我正在寻找一种方法来重定向所有请求,因为它现在正在工作,只是没有斜线或只是解决 mime 类型问题,但我不知道是什么导致它......

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  # Options +SymLinksIfOwnerMatch
  RewriteEngine On

  # Redirect /index.php to / (optional, but recommended I guess)
  RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php
  RewriteRule ^index.php/?(.*)$ $1 [R=301,L]

  # Run everything else but real files through index.php
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1?%{QUERY_STRING} [L]
</IfModule>
4

2 回答 2

2
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>

QSA = Query String Append,它将保留查询字符串。

如果index.php是一个文件,并且该文件存在,那么它不会通过测试,所以不需要第一个RewriteCond块。

于 2013-05-21T20:09:18.737 回答
-1

URL 不能以斜杠结尾。如果我理解正确并且您使用的 URL 是

www.server.com/index.php/[more here]

这是不正确的 URL 语法。您只能在 .php 后面加上一个 get 字符串 -

www.server.com/index.php?some_url_param=some_value

一些参数在这里

于 2013-05-21T20:08:35.847 回答