本地 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">

这应该可以,路径是绝对的。

【讨论】:

这听起来像是我忽略的东西,所以我改变了它。不幸的是,我仍然有这个问题。 可能是个愚蠢的问题,但是您在更改配置文件后是否重新启动了服务器? &lt;Directory "..."&gt; 指令中,您还需要设置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 问题的主要内容,如果未能解决你的问题,请参考以下文章

Apache Mod_Rewrite 不断重定向

apache2服务器mod_rewrite模块 开启方法[linux, ubuntu]

Apache - 添加虚拟目录后无法再使用 mod_rewrite

Apache2 - 使用 mod_rewrite 代理到另一个域

CodeIgniter 删除 index.php apache mod_rewrite

如何在 apache 上用 mod_rewrite 重写我的 url?