1

我正在尝试将http://www.starsqa.com/lala.php?fname=bob变成http://starsQA.com/lala/bob

      <form action="lala.php" method="get">
    Name: <input type="text" name="fname">
    <input type="submit">
    </form> 
Welcome <?php echo $_GET["fname"]; ?>.<br>

我在 .htaccess 上试过这个,但什么也没发生

Redirect 302 /lala.php?fname=bob http://www.starsQA.com/lala/bob.php

这可能吗?

4

3 回答 3

1

如果您想将访问者发送http://www.starsqa.com/lala/bobhttp://www.starsqa.com/lala.php?fname=bob

 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/lala/bob$ /lala.php?fname=bob [L,QSA]
 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/lala/bob/$ /lala.php?fname=bob [L]

如果您想要一个 fname 可以是任何名称的通用模式,请尝试以下操作:

 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/lala/([a-zA-Z0-9:\@.\-\+]{1,100})$ /lala.php?fname=$1 [L,QSA]
 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/lala/([a-zA-Z0-9:\@.\-\+]{1,100})/$ /lala.php?fname=$1 [L]

相反,如果您想将访问者发送http://www.starsqa.com/lala.php?fname=bobhttp://www.starsqa.com/lala/bob

 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/lala.php?fname=bob$ /lala/bob [L]

同样,更一般的模式是:

 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/lala.php?fname=([a-zA-Z0-9:\@.\-\+]{1,100})$ /lala.php/$1 [L]

最后一个示例(将用户从 发送starsQA.com/jen-lilley-contactstarsQA.com/contact-id=6):

 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/jen-lilley-contact$ /contact-id=6 [L]

顺便说一句,不要忘记重新启动 Apache。

如何重新启动 Apache 取决于您的平台配置。你在什么操作系统上运行它?

于 2013-08-09T01:29:17.830 回答
0

您需要查看 mod_rewrite,在此处查看示例和说明:http ://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

就像是

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/lala\.php$
RewriteCond %{QUERY_STRING} ^fname=bob$
RewriteRule ^(.*)$ http://www.starsQA.com/lala/bob.php [R=302,QSD,L]
于 2013-08-09T01:12:20.710 回答
0
RewriteRule ^/lala/(.*)$ /lala.php?fname=$1 [R=302,L]

对面的?

RewriteRule ^/lala.php?fname=(.*)$ /lala/$1.php [R=302,L]
于 2013-08-09T01:12:43.623 回答