.htaccess问题,无法重定向网址

时间:2014-04-15 10:58:45

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

我创建了一个.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>

只想重写网址

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

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

我知道它正在工作,我的a2enmod重写正在进行中 AllowOverride All on / var / www / and 我相信apache正在读取此文件,如果我在这里犯了任何错误,它显示错误500内部服务器错误和 我认为我的重写规则也是正确的,但有些如何无法重写url

在apache2 / error.log

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

我有任何错误或忘记了什么吗?

2 个答案:

答案 0 :(得分: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>

另外,请确保squere括号[]

之间没有任何空格

答案 1 :(得分:1)

重写中存在错误,这是最终代码

<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也不见了。

感谢jonan