Jak*_*old 460 apache mod-rewrite
我已经在我的Vista机器上安装了新的Apache 2.2,一切正常,除了mod重写.
我没有注释
LoadModule rewrite_module modules/mod_rewrite.s
但是我的重写规则都没有,即使是简单的重写规则
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
我正在使用的所有规则都在处理我的托管,所以它们应该没问题,所以我的问题是,apache配置中是否有任何隐藏的东西,可以阻止mod重写?
Jon*_*hak 979
要使用,mod_rewrite您可以在终端中键入以下命令:
sudo a2enmod rewrite
之后重启apache2
sudo /etc/init.d/apache2 restart
要么
sudo service apache2 restart
或者按照新的统一系统控制方式
sudo systemctl restart apache2
然后,如果您愿意,可以使用以下.htaccess文件.
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
上述.htaccess文件(如果放在您DocumentRoot的index.php文件中)将所有流量重定向到文件,DocumentRoot除非该文件存在.
所以,假设您有以下目录结构,而httpdocs就是 DocumentRoot
httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php
httpdocs中存在的任何文件都将使用.htaccess上面显示的方式提供给请求者,但是,其他所有文件都将被重定向到httpdocs/index.php.您的应用程序文件includes/app将无法访问.
小智 224
对于我的情况,我有
RewriteEngine On
在我的.htaccess,以及正在加载的模块,它无法正常工作.
我的问题的解决方案是将我的vhost条目编辑为inlcude
AllowOverride all
在该<Directory>网站的部分中.
Jar*_*rod 80
我在一篇文章中写过这篇文章:http: //www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu
尝试设置:AllowOverride All.
第二个最常见的问题是没有启用mod重写:a2enmod rewrite然后重启apache.
小智 74
如果不是上述工作尝试编辑/ etc/apache2/sites-enabled/000-default
几乎在顶部你会发现
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
更改AllowOverride None到AllowOverride All
这对我有用
nic*_*fly 43
在Ubuntu中:
跑:
a2enmod rewrite
然后:
service apache2 restart
mod_rewrite 现在将启用!
Kri*_*mar 28
如果您知道问题的根源,有多种方法可以解决此问题.
问题1
首先,您的apache没有安装或启用mod_rewrite.c模块可能会出现问题.
因此,您必须按如下方式启用它
打开你的控制台并输入它,这个:
sudo a2enmod rewrite
重启你的apache服务器.
service apache2 restart
问题2
除了上述内容之外,如果它不起作用,您还可以从apache conf文件(apache2.conf,http.conf或000-default文件)更改覆盖规则.
找到"目录/ var/www /"
将"覆盖无"更改为"覆盖所有"
问题3
如果您收到错误,指出未找到重写模块,那么可能您的userdir模块未启用.因此,您需要启用它.
在控制台中输入以下内容:
sudo a2enmod userdir
然后尝试启用重写模块,如果仍未启用(如上所述).
要进一步阅读此内容,您可以访问以下网站:http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html
Ume*_*til 26
打开终端和打印a2enmod rewrite,它将mod_rewrite为您的模块启用Apache.
然后转到/etc/apache2/sites-available并编辑默认文件.(为此,您必须具有此文件和站点可用文件夹的可写权限.)
在下面用现有的第4到14行替换
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
现在用/etc/init.d/apache2 restart或重启你的apacheservice apache2 restart
再次进行干净的URL测试,这次它将被传递.
Ija*_*d N 24
新的apache版本在某种程度上有所改变.如果你的apache版本是2.4那么你必须去/etc/apache2/.将有一个名为的文件apache2.conf.你必须编辑那个(你应该有root权限).像这样更改目录文本
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
现在重启apache.
service apache2 reload
希望它有效.
Dan*_*son 15
<编辑>
刚刚注意到你说mod_rewrite.s而不是mod_rewrite.so - 希望你的问题是一个拼写错误,而不是在httpd.conf文件中!:)
</编辑>
我更习惯在Linux上使用Apache,但是前几天我不得不这样做.
首先,看看你的Apache安装目录.(我假设你把它安装到"C:\ Program Files"这里)
看一下文件夹:"C:\ Program Files\Apache Software Foundation\Apache2.2\modules",并确保那里有一个名为mod_rewrite.so的文件.(应该是,它是作为默认安装的一部分提供的.
接下来,打开"C:\ Program Files\Apache Software Foundation\Apache2.2\conf"并打开httpd.conf.确保该行:
#LoadModule rewrite_module modules/mod_rewrite.so
没有注释:
LoadModule rewrite_module modules/mod_rewrite.so
此外,如果要在默认情况下启用RewriteEngine,您可能希望添加类似的内容
<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>
到httpd.conf文件的末尾.
如果没有,请确保指定
RewriteEngine On
你的.htaccess文件中的某个地方.
旧线程,只想说不要将 AllowOverride 设置为 all 而是使用您要使用的特定 mod,
AllowOverride mod_rewrite mod_mime
这条线应该没有注释
LoadModule rewrite_module modules/mod_rewrite.so
参考资料
小智 5
我只是这样做
sudo a2enmod rewrite
那么您必须通过以下命令重新启动apache服务
sudo service apache2 restart
使用下面的命令
sudo a2enmod rewrite
并通过以下命令重启apache
sudo service apache2 restart
| 归档时间: | 
 | 
| 查看次数: | 1199769 次 | 
| 最近记录: |