我是相对较新的重写,无法让以下工作。 (显然我的域名不是testsite,但是不希望我的域名正在公开,因为它尚未完成。)
我想重写testsite / fishing / region / region.php?region = fife
为:
测试网站/钓鱼/ fife.php
然后想重写testsite / fishing / region / fishery / fishery.php?url = goldenloch
到
测试网站/钓鱼/笛/ goldenloch.php
我使用以下规则
RewriteRule ^fishing/([^/]*)\.php$ /fishing/region/region.php?region=$1 [L]
RewriteRule ^fishing/([^/]*)/([^/]*)\.php$ /fishing/region/fishery/fishery.php?url=$2®ion=$1 [L]
每个规则都可以自行运行,但只在最后一个工作时合并。我添加了[L]标志,我认为应该停止满足条件的任何其他重写规则。但是这仍然不起作用。
答案 0 :(得分:0)
我试过这个似乎有效:
RewriteRule ^/fishing/([^/]*)\.php$ /fishing/region/region.php?region=$1 [R,L]
RewriteRule ^/fishing/([^/]*)/([^/]*)\.php$ /fishing/region/fishery/fishery.php?url=$2®ion=$1 [R,L]
与您的唯一区别(我认为)是领先/
,我使用重定向(R
)只是为了看它正在运作。您应该可以删除R
,以便用户无法在浏览器中看到真实的网址。
如果你不是,我会建议使用命令行工具(如curl
)而不是浏览器来测试它,这样你就可以避免任何缓存或其他麻烦:
curl -vv 'http://localhost/fishing/fife/goldenloch.php'
您将在服务器的响应中看到Location
标头,这是重定向工作。就我而言,我看到了:
Location: http://localhost/fishing/region/region.php?region=fife
和
Location: http://localhost/fishing/region/fishery/fishery.php?url=goldenloch®ion=fife
答案 1 :(得分:0)
原来我需要做
RewriteRule ^fishing/([^/]*)/([^/]*) fishery.php?url=$2®ion=$1 [L]
RewriteRule ^fishing/([^/]*) region.php?region=$1 [L]
首先使用较长的查询并且它工作正常。