2017-05-05 208 views
0

什麼是將 product.php?product=[variable-id]重定向到item/[variable-id]的最佳方法。Mod重寫URL

例如:product.php?product=45item/45

我想是這樣的:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/product\.php$ 
RewriteCond %{QUERY_STRING} ^product=([0-9]*)$ 
RewriteRule ^(.*)$ http://example.com/item/%1.php [L,R=301] 

但是這不工作...

+0

你使用框架或程序化的PHP方法嗎? – Demonyowh

+0

使用'header('Location:https://www.example.com/blahblah/'。$ variable);' –

+0

沒有框架。是的,我正在使用程序化的PHP方法。 –

回答

1

將這個代碼在根目錄下的.htaccess文件。

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^GET\ /product\.php\?product=([^\s&]+) [NC] 
RewriteRule ^product\.php$ /item/%1? [R,L] 
RewriteRule ^item/([^/]+)?$ /product.php?product=$1 [NC,L] 

如果一切正常,因爲它應該,你可以替換RR=301(永久性重定向)。

1

這是「最好的辦法[*]重定向到product.php?product=[variable-id]item/[variable-id],其中product總是第一個URL參數,[variable-id]必須存在,且只由數字0-9。

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^product=(\d+) 
RewriteRule ^product\.php$ /item/%1 [R=302,L] 

如果這個旨在然後永久重定向改變302(臨時)於301(永久),只有當你確認一切工作正常。 301s被瀏覽器強制緩存,因此在測試之前清除瀏覽器緩存。

[*]可辯論 - 基於問題中有限的信息。