我创建了一个.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
我有任何错误或忘记了什么吗?
答案 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