问题描述
||
我一直在使用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解决方法
不知道,如果多数民众赞成在真正的问题,但似乎有一个反斜杠和一个美元符号太多
^/display/([^/]+)$/([^/]+)\\$
| |
^/display/([^/]+)/([^/]+)$
,您的重写规则是将http://www.domain.tld/display/2304/Large
重写为http://www.domain.tld/display.php?photo_id=2304&photo_size=Large
(这意味着第一个存储在第二个位置)
如果要将键入“ 3”的用户重定向到“ 2”,则需要:
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
为了避免无限循环。,很好,如果您在浏览器中输入URL,重写就可以工作..因此,mod_rewrite可以完成它的工作,但是当使用变量访问时,它不会重写URL:
http://www.domain.tld/display.php?photo_id = 2304&photo_size =大(不重写)
http://www.domain.tld/display/2304/Large(键入时有效)
我在某处缺少什么吗?
使用下面的信息,仍然无法重定向,不确定在我的代码放置在错误的地方还是在Apache内部mod_rewrite损坏了。