【问题标题】:.htaccess rewrite url when using get values.htaccess 使用获取值时重写 url
【发布时间】:2013-08-09 01:05:51
【问题描述】:

我正在尝试将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

这可能吗?

【问题讨论】:

标签: php forms .htaccess get


【解决方案1】:

如果您想将访问者从http://www.starsqa.com/lala/bob 发送到http://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=bob 发送到http://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-contact 发送到starsQA.com/contact-id=6):

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

对了,别忘了重启 Apache。

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

【讨论】:

  • 如果用户输入starsqa.com/lala/bob,但您想将请求重定向到starsqa.com/lala.php?fname=bob,我所写的答案将起作用。你是说你想要反过来吗?也就是说,您希望用户输入starsqa.com/lala.php?fname=bob 吗?
  • 我可以把它加到这个东西下面吧?选项 -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [L,QSA]
  • 如何在实时站点上重置 apache?
  • 我会给你一个更好的例子,用户输入starsQA.com/jen-lilley-contact,它给了他们starsQA.com/contact-id=6,但用户仍然看到他们输入的链接
  • os = windows,并且该站点是实时的,而不是在像 xampp 这样的可视化服务器上​​
【解决方案2】:

您需要查看 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]

【讨论】:

【解决方案3】:
RewriteRule ^/lala/(.*)$ /lala.php?fname=$1 [R=302,L]

对面?

RewriteRule ^/lala.php?fname=(.*)$ /lala/$1.php [R=302,L]

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2014-12-23
    • 2015-01-25
    • 1970-01-01
    相关资源
    最近更新 更多