Php Apache重写规则适用于本地主机,但不适用于服务器

Php Apache重写规则适用于本地主机,但不适用于服务器,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有一个网站,我想使用Apache的重写规则来重写URL。 我想: 改写 我在Mac上安装了AMPP,并将以下行添加到httpd.conf中,它们成功地工作: RewriteEngine On RewriteRule ^/p/(.*) /index.php?p=$1 [PT] 我正在尝试做同样的事情,但在我的服务器上。 我已经在/public\u html/.htaccess中添加了相同的apache代码,但是我得到了下面的错误消息: 未找到 在此服务器上找不到请求的URL/p/hom

我有一个网站,我想使用Apache的重写规则来重写URL。 我想:


  • 改写
我在Mac上安装了AMPP,并将以下行添加到
httpd.conf
中,它们成功地工作:

RewriteEngine On
RewriteRule ^/p/(.*) /index.php?p=$1 [PT]
我正在尝试做同样的事情,但在我的服务器上。 我已经在
/public\u html/.htaccess
中添加了相同的apache代码,但是我得到了下面的错误消息:

未找到
在此服务器上找不到请求的URL/p/home。 此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误


完全相同的代码适用于我的本地主机服务器。为什么不在我的网站上?

您需要从重写规则的模式中删除前导斜杠。当重写引擎在htaccess文件中应用规则时,URI的前导斜杠被删除

RewriteEngine On
RewriteRule ^p/(.*) /index.php?p=$1 [PT]

你能检查一下你的远程服务器apache支持“AllowOverride All”吗

也试试这种方法,也许会有帮助

RewriteEngine On
RewriteRule ^p/(.*) /index.php?p=$1 [PT]
但您可能必须正确修改$\u GET['p']。只发送“主”部件。


重新启动发动机
重写cond%{HTTP_HOST}^www\.baileyseymour\.com
重写规则^(.*)$http://www.baileyseymour.com/$1[R=301,L]
.htaccess是放置它们的正确位置,该文件应与默认主页位于同一目录中

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.baileyseymour\.com
RewriteRule ^(.*)$ http://www.baileyseymour.com/$1 [R=301,L]

</IfModule>