.htaccess 重写不起作用?

.htaccess 重写不起作用?

我在 /etc/apache2/vhosts.d/ip-based_vhosts.conf 中有以下虚拟主机:

<VirtualHost test.local:80>
ServerAdmin [email protected]
ServerName test.local
DocumentRoot /home/web/test.net/html

ErrorLog /var/log/apache2/test-error.log
CustomLog /var/log/apache2/test-access.log combined

HostnameLookups Off
UseCanonicalName Off
ServerSignature On

<Directory "/home/web/test.net/html">
  Options Indexes FollowSymLinks
  AllowOverride All

  <IfModule !mod_access_compat.c>
  Require all granted
  </IfModule>
  <IfModule mod_access_compat.c>
  Order allow,deny
  Allow from all
  </IfModule>
  DirectoryIndex index.php
</Directory>
<IfModule proxy_fcgi_module>
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/web/test.net/html/$1
 </IfModule>
</VirtualHost>

在 /home/web/test.net/html 中我有:

.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

索引.php

<?php echo $_SERVER['REQUEST_URI']; ?>

当我访问时http://test.local我正确地得到了“/”(不带引号)。

但是当我访问其他东西时,例如http://test.local/abc我得到的是 404 页面而不是“/abc”。

我该如何解决这个问题才能正常工作?

答案1

您应该检查:

  • 文件是否.htaccess有适当的权限
  • 是否mod_rewrite启用

相关内容