2012-07-09 28 views
4

我有一個重寫規則的設置來改變使用.htaccess更改正在顯示的URL,但不實際重定向內容?

http://kn3rdmeister.com/blog/post.php?y=2012&m=07&d=04&id=4

http://kn3rdmeister.com/blog/2012/07/04/4.php

但實際上重定向在瀏覽器正從頁面。我想還是顯示

/blog/post.php?y=xxxx&m=xx&d=xx&id=xx

但有瀏覽器顯示類似

/blog/post/year/month/day/id.php

簡單的URL我讀一些有關使用的ProxyPass地方,但我不太知道我」在做:P

我希望人們能夠訪問post.php網址的查詢字符串,或乾淨的網址與花哨的shmancy子目錄的日期和獲得相同的內容所有在顯示到底乾淨URL。

回答

2

你想是這樣的:

# First if someone actually requests a /blog/post.php URL, redirect them 
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /blog/post\.php\?y=([0-9]{4})&m=([0-9]{2})&d=([0-9]{2})&id=([0-9]*)\ HTTP/ 
RewriteRule ^blog/post\.php$ /blog/%2/%3/%4/%5.php [R=301,L] 

這將瀏覽器重定向到/blog/##/##/##/##.php URI,將在他們的地址欄中顯示。一旦他們重定向,瀏覽器將發送一個請求/blog/##/##/##/##.php,然後你的服務器需要內部重寫

# We got pretty URLs, but need to rewrite back to the php request 
RewriteRule ^blog/([0-9]{4})/([0-9]{2})/([0-9]{2})/([^\.]+)\.php$ /blog/post.php?y=$1&m=$2&d=$3&id=$4 [L] 

這改變了一切回到國內,以使文件/博客/後。 PHP可以處理請求。

+0

如果我直接進入乾淨/漂亮的URL,但不使用凌亂的URL時,該方法可行。它重定向到'http://kn3rdmeister.com/blog/GET/2012/07/06.php?y = 2012&m = 07&d = 06&id = 5'。但這並不重要,因爲我將發佈並共享乾淨的URL,並且它們的工作非常出色。 – mcneiljm 2012-07-10 20:26:19

+0

對不起,我已經關閉了,看到編輯到'/ blog /%1 /%2 /%3 /%4.php'這行,應該是'/ blog /%2 /%3 /%4/%5.php' – 2012-07-10 20:39:05

+0

是的,這是更好:)再次感謝所有的幫助。 – mcneiljm 2012-07-10 22:32:54

相關問題