1

我有一个在 wampserver 上本地开发的网站,我在 .htaccess 文件中使用 url 重写。我已经尝试了以下所有方法:

  1. mod_rewrite 已启用
  2. httpd.conf 具有 AllowOverride All 目录 ("C:\wamp\www\pascale3")

这是我的 .htaccess 文件,它在这个目录中(“C:\wamp\www\pascale3”)

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^(about|mission|contact)/?$ index.php?p=$1

</IfModule>

这是我要重写的网址:

http://local.pascale3.com/?p=about

我也有一个godaddy live站点,但它也不起作用

4

2 回答 2

0

试试这个 index.php 来调试

<?php
    echo('<pre>');
    print_r($_SERVER);
    print_r($_GET);
    die;

去http://local.pascale3.com/contact时看看你是否得到类似的东西

Array(
    ......
    [QUERY_STRING] => p=contact
    [REQUEST_URI] => /contact
    [SCRIPT_NAME] => /index.php
    [PHP_SELF] => /index.php
    [argv] => Array
        (
            [0] => p=contact
        )

    [argc] => 1
)
Array
(
    [p] => contact
)

如果您没有看到该 p 参数,则存在服务器配置/htaccess 问题。还要检查 index.php?p=contact 是否有效。你会看到上面的调试信息。

于 2013-07-12T19:52:39.620 回答
0

用以下代码替换您的 .htaccess 规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# to externally redirect /index.php?p=about to /about
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?p=(about|mission|contact)[&\s] [NC]
RewriteRule ^ /%1? [R=301,L]

# to internally forward /about to /index.php?p=about
RewriteRule ^(about|mission|contact)/?$ /index.php?p=$1 [L,QSA,NC]
于 2013-07-12T19:58:42.173 回答