我有一个mod_rewrite的问题,我无法理解什么是错的。
首先我做了一个查询字符串重写,有这样的东西:
/api/call
而不是
/api.php/call.php
这在打印请求时不起作用,它是空的,而如果我输入url
/api/call/test=5
请求参数返回test = 5
我在虚拟主机中添加了Allow from all,但它仍然无效。
然后我尝试禁用mod_rewrite,令我惊讶的是,调用/ api仍然加载了/api.php和/ index loaded /index.html。
这真的很奇怪,因为如果禁用mod_rewrite就不会发生这种情况。事实上,如果我在我的本地WAMP服务器上尝试它,则会显示未找到的404。
这意味着某些地方在Ubuntu服务器上有某种重写但我无法理解这是如何使用mod_rewrite被禁用的。
有什么想法吗?
提前致谢
编辑(网站可用内容)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Apache重启成功,重启没有重新加载。
答案 0 :(得分:2)
MultiViews
已启用/var/www
。
http://httpd.apache.org/docs/current/mod/mod_negotiation.html#multiviews
答案 1 :(得分:0)
尝试命令:
a2dismod rewrite
然后重启apache。还要确保根目录中没有指定mod-rewrite设置的.htaccess文件。