【问题标题】: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 是放置它们的正确位置,该文​​件应与默认主页位于同一目录中。

        【讨论】: