无效命令' RewriteEngine',可能由服务器配置中未包含的模块拼写错误或定义

时间:2017-07-16 12:59:22

标签: php apache .htaccess

所以我有这个.htaccess为我重写一个URL,它还没有工作。

如果我查看var/logs/apache2/error_log,则会说: -

[[Sun Jul 16 18:22:28.958099 2017] [core:alert] [pid 4237] [client ::1:54344] /Library/WebServer/Documents/getcv/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

可能有什么问题?我甚至在httpd.conf中启用了rewrite_module

LoadModule request_module libexec/apache2/mod_request.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module libexec/apache2/mod_filter.so

这里是 .htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteBase /foldername/

RewriteCond %{THE_REQUEST} /my_profile\.php\?username=([^\s&]+) [NC]
RewriteRule ^ %1? [R=301,L,NE]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ my_profile.php?username=$1 [L,QSA]

2 个答案:

答案 0 :(得分:0)

我知道这个问题已经差不多一年了,但是我也遇到了这个问题,并在寻找答案时遇到了这个问题。

我在这里找到了答案:

https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04

在我的情况下,我做了以下(我运行Ubuntu 16.x.x) 1.编辑/etc/apache2/apache2.conf - 我补充说 `

<Directory /var/www/html/api>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
</Directory>

`

  1. 在/var/www/html/api/.htaccess中,我添加了

    RewriteCond%{REQUEST_FILENAME}! - f RewriteCond%{REQUEST_FILENAME}!-d

    RewriteRule ^(。)$ /index.php?path=$1 [NC,L,QSA] RewriteRule ^。 $ /index.php [L,QSA] FallbackResource /index.php

    ErrorDocument 404 /api404.php

  2. 请注意,api404.php只是我自己的自定义404页面,用于向访问者提供自定义/受控消息,而不是标准输出。

    1. 然后,如上面的链接所示,我通过运行以下命令启用了module_override (a)sudo a2enmod重写 (b)sudo service apache2 restart
    2. 完成上述步骤后,我的URI https://api.sitename.com/rfq/new重定向到我的index.php脚本,我能够按预期处理URI的解析。

      希望这有助于其他人解决他们的问题,我确实对此感到沮丧,但接近24小时后,终于解决了!

答案 1 :(得分:-1)

您的Apache上是否启用了mod_rewrite?