我正在设置我的新电脑,但我的某个网站似乎有一个奇怪的问题。任何以/ api开头的URL都应重定向到文档根目录中的api.php。下面的.htaccess文件在我的旧机器上工作但不在新机器上...
RewriteEngine On
RewriteRule ^api* /api.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [L]
访问/ api / v1 / articles时我得到404。我启用了mod_rewrite,我可以直接浏览到api.php文件,如果我使用下面的.htaccess示例,它可以正常工作
RewriteEngine On
RewriteRule ^wapi* /api.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [L]
所以似乎重定向/ api只会出现问题。可能导致这种情况的原因是什么?!
(在Ubuntu 13.04 btw上运行Apache)
答案 0 :(得分:1)
尝试在规则中添加斜杠,确保Multiviews
关闭:
Options -Multiviews
RewriteRule ^api/ /api.php [L]
Multiviews
是mod_negotiation的一部分,当它打开时(有时默认情况下),它将取代重写规则,因为它来自URL处理管道中的mod_rewrite。如果它看到请求/api
并且发现有一个名为/api.php
的文件,则会假定您的意思是/api.php
而不是假目录/api/
。
答案 1 :(得分:0)
尝试此规则:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^api(?!\.php).*$ /api.php [L,NC]