2012-09-05 115 views
0

好的,所以我已經嘗試了很多事情,我已經找到了SO和其他地方,但我不能得到它的工作,總是收到404錯誤代碼。mod_rewrite與uriencoded查詢字符串漂亮的網址

我想進入這個網址:

memorizeit.com/pics/220.0.8251.20120905002352.7982368227/Jameson+tested+the+MemorizeIt%21+Android+app%3A+With+Facebook+%26+Twitter.+Getting+grass+stains. 

並將其無形轉化爲:

memorizeit.com/pics/index.php?pic=220.0.8251.20120905002352.7982368227&title=Jameson+tested+the+MemorizeIt%21+Android+app%3A+With+Facebook+%26+Twitter 

index.php頁面尋找:

$pic = ($_GET["pic"]); 
$title = ($_GET["title"]); 

在/ pics目錄中的.htaccess文件中,我有以下內容:

RewriteEngine on 
Header set Cache-Control "max-age=2592000" 
RewriteRule ^pics/([^\/]*)/([^\/]*)/([^\/]*)$ /pics/index.php?pic=$1&title=$2&extra=$3 [L,QSA] 
RewriteRule ^pics/(.+)/(.+)$ /pics/index.php?pic=$1&title=$2 [L,QSA] 
RewriteRule ^pics/([^\/]*)$ /pics/index.php?pic=$1 [L,QSA] 

我已經試過了,沒有QSA,我試過了。+(任何東西)和[^ /] *(除/以外的任何東西)我把它們都放在裏面,他們在那裏(我想!)。我打算讓$ 1允許只包含數字和句點,但我只想讓它首先被廣泛應用。

我不明白爲什麼它不起作用。在我的基礎URL .htaccess文件我有:

RewriteCond %{SERVER_PORT} ^80$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

,它總是重定向到HTTPS,所以我知道正在讀取.htaccess文件。我不知道還有什麼要嘗試。任何想法將不勝感激。謝謝!

回答

0

原來,因爲pics /是一個真正的目錄,重寫正在努力到達那裏,而不是繼續前進並重寫它。所以我將匹配語句中的pics /更改爲p /,並將規則移至基本.htaccess文件,並按預期工作。

哇,這花了很長的痛苦時間...希望它可以節省別人的一些時間。