2014-11-24 27 views
0

我在重寫URL時遇到了一些麻煩。htaccess重寫重定向到不存在的頁面

我想:

  1. 使用參數重寫URL以斜線

  2. 重定向的URL重寫。

  3. 允許URL中的test.php之前的A-Z0-9目錄。現在/test.php只觸發。

例如:

a href="test.php?options=1>Click here</a> 

,點擊後重定向到URL:

test/options/1 

OR

abc123/test/options/1 (if the link had abc123/test.php) 

而這個頁面會隨着實際工作打開test.php的

現有代碼:

RewriteRule ^test/(.*)$ /test.php?options=$1 
RewriteRule ^test\.php$ /test/options/%1 [L,R=301] 

兩個問題上面的代碼:

  1. 斜槓的工作,但參數不會消失在網址的結尾。 ?options = xx stay
  2. test.php在url中可能有目錄號碼或字母。在這種情況下,URL重寫不會觸發。 ?
+0

爲點2:'^'表示「字符串的開始」。如果你有「test.php」之前的東西,那麼你不能有「字符串開始」錨點。 – 2014-11-24 16:08:40

+0

您能否提供您想要支持的示例URL列表,並且還包括其實際的內部URI。 – anubhava 2014-11-24 16:10:54

+0

所以你想從搜索友好的乾淨的URL更改爲參數化的URL?這與大多數人試圖做的事情相反。你在這裏的用例是什麼? – 2014-11-24 16:20:44

回答

1

如果你只是想重定向/測試選項= {PARAM}到/測試/ 1 /和/測試選項= {PARAMS}到/測試,你可以這樣做:

RewriteCond %{QUERY_STRING}  ^test=options$  [NC] 
RewriteRule ^/test$    /test/options/  [NC,L,R=301] 

RewriteCond %{QUERY_STRING}  ^test=options$ [NC] 
RewriteRule ^/blog$    /test/   [NC,L,R=301] 
+0

這幾乎是完美的。但我有兩個不同的虛擬目錄。重寫條件如何適用於: products/test.php?options = 1 items/test.php?options = 1 – tdjfdjdj 2014-12-01 14:16:59