我在Apache 2.4.10(Debian)上本地开发Web服务
我想将网址用作以下内容:http://localhost/ws/rest/users
其中/ ws / rest是物理目录,用户是参数。
我写了以下/var/www/html/ws/rest/.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ ws/rest/api.php?rquest=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ ws/rest/api.php [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ ws/rest/api.php [QSA,NC,L]
</IfModule>
这个想法是将所有内部路径重定向到api.php文件,但是当我将浏览器指向上一个URL时,我总是收到“404 Not found”错误。
问题出在哪里?
答案 0 :(得分:1)
你错过了RewriteBase
指令。
由于您的.htaccess
目录位于/ws/rest/
目录中,并且此路径是您网址的一部分,因此您可以使用/ws/rest/
作为RewiteBase
。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ws/rest/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ api.php [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ api.php [QSA,NC,L]
</IfModule>
答案 1 :(得分:0)
我解决了添加到/etc/apache2/sites-available/000-default.conf
文件的问题:
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
并重新启动apache