Jak*_*old 460 apache mod-rewrite
我已经在我的Vista机器上安装了新的Apache 2.2,一切正常,除了mod重写.
我没有注释
LoadModule rewrite_module modules/mod_rewrite.s
Run Code Online (Sandbox Code Playgroud)
但是我的重写规则都没有,即使是简单的重写规则
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Run Code Online (Sandbox Code Playgroud)
我正在使用的所有规则都在处理我的托管,所以它们应该没问题,所以我的问题是,apache配置中是否有任何隐藏的东西,可以阻止mod重写?
Jon*_*hak 979
要使用,mod_rewrite您可以在终端中键入以下命令:
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
之后重启apache2
sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
要么
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
或者按照新的统一系统控制方式
sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
然后,如果您愿意,可以使用以下.htaccess文件.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
上述.htaccess文件(如果放在您DocumentRoot的index.php文件中)将所有流量重定向到文件,DocumentRoot除非该文件存在.
所以,假设您有以下目录结构,而httpdocs就是 DocumentRoot
httpdocs/
.htaccess
index.php
images/
hello.png
js/
jquery.js
css/
style.css
includes/
app/
app.php
Run Code Online (Sandbox Code Playgroud)
httpdocs中存在的任何文件都将使用.htaccess上面显示的方式提供给请求者,但是,其他所有文件都将被重定向到httpdocs/index.php.您的应用程序文件includes/app将无法访问.
小智 224
对于我的情况,我有
RewriteEngine On
Run Code Online (Sandbox Code Playgroud)
在我的.htaccess,以及正在加载的模块,它无法正常工作.
我的问题的解决方案是将我的vhost条目编辑为inlcude
AllowOverride all
Run Code Online (Sandbox Code Playgroud)
在该<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>
Run Code Online (Sandbox Code Playgroud)
更改AllowOverride None到AllowOverride All
这对我有用
nic*_*fly 43
在Ubuntu中:
跑:
a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
然后:
service apache2 restart
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
现在用/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>
Run Code Online (Sandbox Code Playgroud)
现在重启apache.
service apache2 reload
Run Code Online (Sandbox Code Playgroud)
希望它有效.
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
Run Code Online (Sandbox Code Playgroud)
没有注释:
LoadModule rewrite_module modules/mod_rewrite.so
Run Code Online (Sandbox Code Playgroud)
此外,如果要在默认情况下启用RewriteEngine,您可能希望添加类似的内容
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
Run Code Online (Sandbox Code Playgroud)
到httpd.conf文件的末尾.
如果没有,请确保指定
RewriteEngine On
Run Code Online (Sandbox Code Playgroud)
你的.htaccess文件中的某个地方.
旧线程,只想说不要将 AllowOverride 设置为 all 而是使用您要使用的特定 mod,
AllowOverride mod_rewrite mod_mime
Run Code Online (Sandbox Code Playgroud)
这条线应该没有注释
LoadModule rewrite_module modules/mod_rewrite.so
Run Code Online (Sandbox Code Playgroud)
参考资料
小智 5
我只是这样做
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
那么您必须通过以下命令重新启动apache服务
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
使用下面的命令
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
并通过以下命令重启apache
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1199769 次 |
| 最近记录: |