本地 Apache 服务器 mod_rewrite/pretty links 问题
Posted
技术标签:
【中文标题】本地 Apache 服务器 mod_rewrite/pretty links 问题【英文标题】:Local Apache Server mod_rewrite/pretty links issue 【发布时间】:2011-06-25 22:54:01 【问题描述】:我不得不从在实时服务器上进行测试,转向在虚拟 apache 服务器上进行本地测试。我已经很好地安装了 XAMPP,下载并安装了 wordpress 文件和数据库。一切看起来都很棒!我主页的本地版本与现场版本相同。只有一个问题:主页是唯一 可以工作的页面。当我单击其中一个链接,即“关于”页面 (http://localhost/wordpress/about/) 时,我被重定向到 xampp 控制面板 (http://localhost/xampp)。
我感觉这与“漂亮链接”/mod_rewrite 规则的问题有关。我确保我带来了 .htaccess 文件,它包含重写指令。 wordpress 数据库具有正确的永久链接结构,并且 httpd.conf 文件启用了“RewriteEngine on”和“FollowSymLinks”指令。这里肯定存在某种重写问题,尽管我不排除我可能做过的其他愚蠢的事情。感谢您的所有帮助!
-E
*这是 .htaccess 的样子:
#
BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
#
结束WordPress
【问题讨论】:
【参考方案1】:在httpd.conf中,更改
DocumentRoot "/path/to/your/app/wordpress"
还有
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/path/to/your/app/wordpress">
这应该可以,路径是绝对的。
【讨论】:
这听起来像是我忽略的东西,所以我改变了它。不幸的是,我仍然有这个问题。 可能是个愚蠢的问题,但是您在更改配置文件后是否重新启动了服务器? 在<Directory "...">
指令中,您还需要设置AllowOverride All
是的,我已经重新启动了服务器,并且 AllowOverride 设置为 All。
我不确定它是怎么做的,但是在再次重置所有内容后,它起作用了!非常感谢!【参考方案2】:
你有没有加载:
LoadModule rewrite_module modules/mod_rewrite.so
在 httpd.conf 中??
【讨论】:
【参考方案3】:如果您的服务器版本使用域名,即:http://domainname.com 等同于 http://localhost/wordpress,则重写规则将有所不同。在此处发布规则。
【讨论】:
【参考方案4】:问题在于 wordpress 出于某种原因不相信相对路径。假设 wordpress 是从服务器根目录而不是根目录下的目录运行的(例如,/var/www/wordpress
不起作用,但 /var/www/
会)。
问题在于他们提供的 .htaccess 文件。它应该将其重新写入index.php
而不是/index.php
。在您的配置中更改该行,它将起作用。
发生的情况是它实际上尝试转到默认文档根目录(在我的情况下是 /var/www/index.php,因为我使用的是 http://localhost/worpress
,它是 ~/projects/worpress
的别名,所以它不存在) .你可以检查你的错误日志,它会告诉你它试图在哪里寻找 index.php 文件(这将返回一个 404 错误)。
我可以继续抱怨他们这样做有多愚蠢,以及 wordpress 的整个软件设计有多糟糕。但我会放过你的:)。
【讨论】:
以上是关于本地 Apache 服务器 mod_rewrite/pretty links 问题的主要内容,如果未能解决你的问题,请参考以下文章
apache2服务器mod_rewrite模块 开启方法[linux, ubuntu]
Apache - 添加虚拟目录后无法再使用 mod_rewrite
Apache2 - 使用 mod_rewrite 代理到另一个域