2015-07-19 91 views
0

我正在嘗試將我網站上的所有以下網址重定向到新版本。這裏是我們的目標:.htaccess使用GET變量的通配符重定向

BEFORE(注意,沒有 '.PHP ')

https://example.com/view?username=asdf1234 

重定向到(有' .PHP' 和內部的 '工具' 文件夾)

https://example.com/tool/view.php?username=asdf1234 

我試了幾個例子,但無法弄清楚。這是我最好的猜測

RewriteEngine On 
RewriteRule ^/view\?username=(.+) /tool/view.php?%1 [L,R=301] 

添加

RewriteEngine On 
RedirectMatch ^/view(.*)$ https://example.com/tool/view.php$1 

成功重定向但它是一個302重定向。當我添加[L,R = 301]時,它給出了一個500錯誤。

回答

1

你可以嘗試負斷言:

RewriteEngine On 
RewriteCond "%{REQUEST_URI}" ^/tool/?.*$ 
RewriteRule ".?" "-" [S=1] 
RewriteRule "^/(.*)$" "/tool/$1?%{QUERY_STRING}" [L,R=301] 
  • 的第一條規則規定的URL以/工具開始的條件。
  • 第二條規則規定,如果第一條規則通過,則SKIP下一個1 規則。
  • 第三條規則說要實現一個重定向到/tool/(TheUrlYouVisited.whatever)

因此,如果網址不/工具開始,第三條規則將不會被跳過,因此你有你的包羅萬象的重定向。


作爲一個測試,你也只需要添加一個簡單的:

RedirectMatch ^/view(.*)$ http://www.example.com/tool/view$1 

如果不工作,你就知道什麼東西完全是怎麼回事。

+0

我剛試過,當我訪問https://example.com/view?username=test沒有重定向 – StackOverflower

+0

你有其他重寫規則優先嗎?也許更高的地方 –

+0

我把它移到我的.htaccess文件的頂部,沒有什麼是重定向。 – StackOverflower