2017-03-15 82 views
1

我有一個網址,其結構爲http://localhost/slugone/dynamicslug?query=00000,我試圖將其改寫爲http://localhost/slugone/dynamicslug/00000.htaccess不用index.php重寫

我已經成功地得到的.htaccess認識到這一點RewriteRule

RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L,R=301] 

但這並不做什麼,我需要它,而不是掩蓋/slugone/dynamicslug/00000/slugone/dynamicslug?query=00000,它不是重定向的URL漂亮帶有查詢參數的網址。

/dynamicslug/是用來顯示在頁面上特定產品蛞蝓,以及?query=00000用於選擇這種產品的變化,所以我不能明確地使用/dynamicslug/在我的重寫規則,無論是。

搜索SO沒有給我任何結果,因爲我可以找到的所有問題都使用index.php在他們的重寫中,我不是。

+0

首先,爲什麼不從其他人中刪除'index.php'規則是什麼?沒有什麼魔力;它只是文本。其次,你確定你真的想在這裏重定向嗎?這與人們在這些情況下通常想要的相反。看起來更有可能是你想要使用「漂亮」URL(沒有參數的那個URL)來訪問帶有參數的URL,而不用做重定向。 –

+0

嗨Ed,對不起,我還沒有清楚。我更新了這個問題,我在一個漂亮的URL之後,而不是重定向。 –

回答

3

你應該扭轉你重寫規則:

RewriteCond %{QUERY_STRING} ^query=([0-9]+)$ 
RewriteRule ^slugone/([^/]+)$ /slugone/$1/%1? [L,R=301] 

編輯:

如果你想讓它表現爲一個漂亮的URL,你應該只刪除您最初的重寫規則重定向:

RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L] 
+0

嗨弗洛裏安,對不起,我還沒有清楚。我不是在重定向之後,而是在一個漂亮的URL之後。其次,我不能在規則中使用'slugtwo',因爲它是我使用的CMS的動態slu slu。我已經更新了這個問題來反映這一點。 –

+0

然後您應該刪除最初的RewriteRule的重定向部分。看我的編輯。 –

+0

謝謝弗洛裏安,這肯定會讓我走上正確的道路。 –