【问题标题】:.htaccess issue, not able to redirect url.htaccess 问题,无法重定向 url
【发布时间】:2014-05-29 16:30:37
【问题描述】:

我已经创建了一个 .htaccess 文件,这里是代码

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule rudra/example/restapi/(.*)$ rudra/example/restapi/MyAPI.php?request=$1 [QSA,NC,L]
</IfModule>

只想重写url

localhost/rudra/example/restapi/asd/asd/asda

  localhost/rudra/example/restapi/MyAPI.php?request=asd/asd/asda

我知道它正在工作,我的 a2enmod 重写已开启并且 AllowOverride All on /var/www/ 和 我相信 apache 正在读取这个文件,因为如果我在这里犯了任何错误,它会显示错误 500 internal server error 和 我认为我的重写规则也是正确的,但有些无法重写 url

在 apache2/error.log 中

[error] [client 127.0.0.1] File does not exist: /var/www/rudra/example/restapi/example

我是不是做错了什么或者忘记了什么?

【问题讨论】:

    标签: apache .htaccess mod-rewrite ubuntu-12.04


    【解决方案1】:

    您不能在RewriteRule 中使用 NC 标志,删除它就可以了。此外,您应该将 RewriteBase 设置为 /,如下所示:

    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteBase /
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule rudra/example/restapi/(.*)$ rudra/example/restapi/MyAPI.php?request=$1 [QSA,L]
    </IfModule>
    

    另外,请确保方括号 [] 之间没有空格

    【讨论】:

    • jonan,在应用您建议的修改后它仍然无法正常工作,它给了我同样的未找到的 url 和我使用的另一件事 [NC],如果我错了,请纠正我,但它告诉该网址不区分大小写。那么为什么我不能在重写规则中使用 NC 标志呢?
    【解决方案2】:

    重写有错误,这里是最终代码

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ rudra/example/restapi/MyAPI.php?request=$1 [QSA,NC,L]
    </IfModule>
    

    我猜这个 RewriteBase 也不见了。

    谢谢乔南

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 2015-04-15
      • 2021-07-06
      • 2021-02-27
      • 2020-12-03
      • 1970-01-01
      • 2012-12-08
      • 2021-09-04
      • 1970-01-01
      相关资源
      最近更新 更多