【问题标题】:Apache rewrite rule works on localhost but not on serverApache 重写规则适用于 localhost 但不适用于服务器
【发布时间】:2026-01-03 21:20:03
【问题描述】:
我有一个网站,我想使用 Apache 的 RewriteRule 来重写 URL。
我要:
我在我的 Mac 上安装了 AMPPS,并将以下行添加到 httpd.conf 并且它们成功运行:
RewriteEngine On
RewriteRule ^/p/(.*) /index.php?p=$1 [PT]
我正在尝试做同样的事情,但在我的服务器上。
我已将相同的 apache 代码添加到 /public_html/.htaccess,但我收到以下错误消息:
未找到
在此服务器上找不到请求的 URL /p/home。
此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
完全相同的代码适用于我的本地主机服务器。为什么不在我的网站上?
【问题讨论】:
标签:
php
apache
.htaccess
mod-rewrite
url-rewriting
【解决方案1】:
你能检查你的远程服务器 apache 是否支持“AllowOverride All”吗?
也试试这个方法也许会有所帮助。
RewriteEngine On
RewriteRule ^p/(.*) /index.php?p=$1 [PT]
但您可能必须正确修改 $_GET['p']。这将只发送“家”部分。
【解决方案2】:
您需要从重写规则的模式中删除前导斜杠。当重写引擎在 htaccess 文件中应用规则时,URI 的前导斜杠被删除。
RewriteEngine On
RewriteRule ^p/(.*) /index.php?p=$1 [PT]
【解决方案3】:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.baileyseymour\.com
RewriteRule ^(.*)$ http://www.baileyseymour.com/$1 [R=301,L]
</IfModule>
.htaccess 是放置它们的正确位置,该文件应与默认主页位于同一目录中。