2012-09-05 75 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文件,并按预期工作。

哇,这花了很长的痛苦时间...希望它可以节省别人的一些时间。