如何在任何操作系统上启用mod_rewrite?

Joh*_*ohn 46 php mod-rewrite

如果我理解正确,我需要放入一些东西httpd.config来启用mod_rewrite.如果这是真的,我需要什么就摆在httpd.confapache.conf?请具体操作系统.

Pek*_*ica 65

不,mod_rewrite是一个Apache模块,与PHP无关.

要激活模块,httpd.conf需要激活以下行:

LoadModule rewrite_module modules/mod_rewrite.so
Run Code Online (Sandbox Code Playgroud)

要查看它是否已处于活动状态,请尝试将.htaccess文件放入包含该行的Web目录中

RewriteEngine on
Run Code Online (Sandbox Code Playgroud)

如果这样做没有抛出500内部服务器错误,并且.htaccess文件被解析,URL重写工作.

  • @John你通常无法在共享主机上自己激活mod_rewrite:这取决于托管公司这样做.尝试`RewriteEngine`看它是否已经活跃 - 如果不是,你将不得不与他们交谈. (2认同)

Far*_*den 59

对于使用Apache2在Debian上启用mod_rewrite的人来说,这只是一个假设:

要检查mod_rewrite是否已启用:

通过运行在mods_enabled中查找指向模块的链接

ls /etc/apache2/mods-enabled | grep rewrite
Run Code Online (Sandbox Code Playgroud)

如果输出rewrite.load则模块启用.(注意:你的apache2路径可能不是/ etc /,尽管它可能是.)

要启用mod_rewrite,如果它还没有:

启用模块(基本上创建我们上面寻找的链接):

a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

重新加载所有apache配置文件:

service apache2 restart
Run Code Online (Sandbox Code Playgroud)

  • 正是我在解决永久链接Wordpress问题时所需要的.感谢我需要的特定SSH命令. (2认同)

Sad*_*dee 12

在我的情况下,即使在所有这些配置完成后也出现了问题(@Pekka已经提到了httpd.conf和.htaccess文件中的更改).它只在我添加后解决了

<Directory "project/path">
  Order allow,deny
  Allow from all
  AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)

到vhost文件中的虚拟主机配置

编辑于2017年9月29日(对于Apache 2.4 <) 请参阅此答案

<VirtualHost dropbox.local:80>
DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
ServerName dropbox.local
ErrorLog "logs/dropbox.local-error.log"
CustomLog "logs/dropbox.local-access.log" combined
<Directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
    # AllowOverride All      # Deprecated
    # Order Allow,Deny       # Deprecated
    # Allow from all         # Deprecated

    # --New way of doing it
    Require all granted    
</Directory>
Run Code Online (Sandbox Code Playgroud)