Php 另一个.htaccess url重写问题

Php 另一个.htaccess url重写问题,php,url-rewriting,apache2,Php,Url Rewriting,Apache2,我有一个在wampserver上本地开发的站点,我在一个.htaccess文件中使用url重写。我尝试了以下所有方法: mod_重写已启用 httpd.conf已允许对目录C:\wamp\www\pascale3执行所有操作 这是我的.htaccess文件,它位于C:\wamp\www\pascale3目录下 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^(about|mission|con

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

mod_重写已启用 httpd.conf已允许对目录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>

我还有一个godaddy live站点,它在那里也不起作用

请尝试使用此index.php进行调试

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

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

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


您知道重写规则是针对传入的URL,而不是重写现有的URL吗?你犯了什么错误?另外,请尝试提出一个描述性/总结性的问题标题。没有p参数,这很奇怪,为什么wampserver不接受get VariableEvermind它正在获取get变量,我没有添加重写标志。是的,L代表最后一个,QSA代表查询字符串附加,NC代表无忽略大小写比较。
<?php
    echo('<pre>');
    print_r($_SERVER);
    print_r($_GET);
    die;
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
)
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]