Apache重写规则适用于localhost,但不适用于服务器

时间:2013-08-30 00:00:02

标签: php apache .htaccess mod-rewrite url-rewriting

我有一个网站,我想使用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错误。

完全相同的代码在我的localhost服务器上运行。为什么不在我的网站上?

3 个答案:

答案 0 :(得分:5)

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

也尝试这种方式也许会有所帮助。

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

但您可能需要正确修改$ _GET ['p']。这将只发送“家庭”部分。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

<IfModule mod_rewrite.c>

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

</IfModule>

.htaccess是放置它们的正确位置,该文​​件应与默认主页位于同一目录中。