我一直在使用mod_rewrite,似乎无法让url显示出很好的效果,仍然在URL中显示php变量。
这是当前的htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^/display/([^/]+)$/([^/]+)\$ http://www.mydomain.tld/display.php?photo_id=$1&photo_size=$2 [NC]基本上,我已经尝试了所有方法来获得一个干净的url,如下所示:http://www.mydomain.tld/display/3456/large
发布于 2011-04-19 08:46:46
我不知道这是不是真的有问题,但是看起来,有一个反斜杠和一个美元符号太多了
^/display/([^/]+)$/([^/]+)\$
| |
^/display/([^/]+)/([^/]+)$发布于 2011-04-19 11:38:38
如果您在浏览器中键入URL,则会进行重写。所以mod_rewrite正在做它的工作,但是当使用变量访问时,它不会重写URL:
http://www.domain.tld/display.php?photo_id=2304&photo_size=Large (无重写) http://www.domain.tld/display/2304/Large (键入时有效)
我是不是漏掉了什么?
使用下面的信息,仍然没有重定向,不确定我是否将代码放在了错误的地方,或者mod_rewrite的某些东西可能在apache中损坏了。
发布于 2011-04-19 20:44:05
您的重写规则是将http://www.domain.tld/display/2304/Large重写为http://www.domain.tld/display.php?photo_id=2304&photo_size=Large (意思是将第一个存储在第二个位置)
如果希望将键入http://www.domain.tld/display.php?photo_id=2304&photo_size=Large的用户重定向到http://www.domain.tld/display/2304/Large,则需要:
RewriteCond %{QUERY_STRING} ^photo_id=([0-9]+)&photo_size=(.*)$
RewriteRule display.php /display/%1/%2 [R,L] #R to redirect, and then change the URL in the browser你必须添加一些像这样的东西
RewriteCond %{REDIRECT_URL} !^display.php$
RewriteRule ^/display/([^/]+)/([^/]+)$ display.php?photo_id=$1&photo_size=$2以避免无限循环。
https://stackoverflow.com/questions/5710040
复制相似问题