簡體   English   中英

.htaccess使用獲取值時重寫URL

[英].htaccess rewrite url when using get values

我正在嘗試將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

這可能嗎?

如果您希望將訪問者從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取決於您的平台配置。 您在什么操作系統上運行它?

您需要研究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]
RewriteRule ^/lala/(.*)$ /lala.php?fname=$1 [R=302,L]

相反?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM