无法获取.htaccess mod_rewrite规则工作 – 404找不到

我试图得到一个简单的.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无法find。

我的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文档没有正确设置的错误。

这听起来像你的Apache不加载mod_rewrite。

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

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

在我的路线上是:

 Loadmodulee rewrite_module libexec/apache2/mod_rewrite.so 

…但是YMMV。

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

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

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

找到“目录”标签。 应该看起来像这样 – >

 <Directory "/var/www/html"> 

AllowOverride None替换为

 AllowOverride All 

重新开始

 sudo service httpd restart