无法获取.htaccess mod_rewrite规则 - 404 Not Found

时间:2013-05-09 01:20:44

标签: apache .htaccess

我正在尝试使用简单的.htaccess重写规则,但我似乎无法解决这个问题。

我的.htaccess看起来像:

RewriteEngine On
RewriteRule ^api$ phpinfo.php
ErrorDocument 404 /error.php

php_flag  display_errors                  on
php_flag  display_startup_errors          on
php_flag  file_uploads                    on
php_value error_reporting                 2047
php_value max_input_time                  60
php_value post_max_size                   8M
php_value upload_max_filesize             2M

当我访问/api时,收到404错误,指出无法找到/api

我的apache conf文件如下:

<IfModule mod_ssl.c>
  NameVirtualHost 10.104.17.3:443
  <VirtualHost 10.104.17.3:443>
    ServerName orddev.foo.com.au
    DocumentRoot /var/www/orddev.foo.com.au___443/html
    <Directory />
      Options FollowSymLinks
      AllowOverride All
    </Directory>
    <Directory "/var/www/orddev.foo.com.au___443/html">
      Options FollowSymLinks MultiViews IncludesNOEXEC
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
    <IfModule mod_php5.c>
      php_admin_value upload_tmp_dir "/var/www/orders.foo.com.au___443/resources/_tmp/upload/"
    </IfModule>
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_METHOD} ^TRACE
      RewriteRule .* - [F]
    </IfModule>
    ErrorLog  logs/orddev.foo.com.au___443/ssl_error.log
    CustomLog logs/orddev.foo.com.au___443/ssl_access.log combinedio
    CustomLog logs/orddev.foo.com.au___443/ssl_request.log ssl
    LogLevel warn
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:!SSLv2
    SSLCertificateFile /etc/pki/tls/certs/orddev.foo.com.au.crt
    SSLCertificateKeyFile /etc/pki/tls/private/orddev.foo.com.au.key
    <Files ~ "\.(cgi|shtml|phtml|php|php3?)$">
      SSLOptions +StdEnvVars
    </Files>
    SetEnvIf User-Agent ".*MSIE.*" \
      nokeepalive ssl-unclean-shutdown \
      downgrade-1.0 force-response-1.0
  </VirtualHost>
</IfModule>

知道我做错了什么吗? 我知道.htaccess正在被读取,好像我更改了404文档,我收到有关404文档未正确设置的错误。

2 个答案:

答案 0 :(得分:5)

我有一个工作的.htaccess文件,我切换到另一台服务器。它之前工作正常,并在切换后停止工作。我通过配置httpd.conf文件解决了这个问题。

SSH到您的服务器上并打开httpd.conf文件进行编辑:

cd /etc/httpd/conf
sudo nano httpd.conf

找到“目录”标签。应该看起来像这样 - &gt;

<Directory "/var/www/html">

AllowOverride无替换为

AllowOverride All

重新启动

sudo service httpd restart

答案 1 :(得分:1)

听起来你的apache没有加载mod_rewrite。

找到你的httpd.conf并搜索“rewrite_module”。

如果该行以#开头(使其成为注释),请删除#并重新启动apache。

在我的行中,行是:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

......但是YMMV。