编辑 @mootinator已经完成了很棒的工作。请参阅下面的答案。
由于我不清楚指定我的确切URI,它仍然可以帮助那些寻找类似东西的人。我的URI更像是:9/Here-is-some-text/unwatch
...在这种情况下,您需要mod_rewrite
规则看起来更像这样:
RewriteEngine on
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/unwatch/?$ index.php?id=$1&unwatch=1 [QSA,L]
对@ mootinator的答案进行了相当小的修改,但是我花了几分钟才弄清楚自己。可以帮助别人节省时间。
我正在尝试mod_rewrite
传递一个GET
参数,一种布尔标记,这样每当有人进入URI/unwatch
时,你都可以拉出{{1} }}
我已经有了这个规则:
&unwatch=1
我想有另一条规则做这样的事情:
RewriteRule ^(\d+)/* index.php?id=$1 [L]
“目录”RewriteRule ^(\d+)/unwatch index.php?id=$1&unwatch=1 [L]
不一个目录。目录结构如下所示:
./unwatch
关于如何做到这一点的任何想法?
答案 0 :(得分:3)
RewriteRule ^([0-9]+)/?$ index.php?id=$1 [QSA,L]
RewriteRule ^([0-9]+)/unwatch/?$ index.php?id=$1&unwatch=1 [QSA,L]
QSA代表查询字符串追加。这样,用户传递的参数不会被删除。
如果我遗漏了一些涉及到不是真实目录的网址,请查看CakePHP如何做到这一点。
使用以下.htaccess工作演示here:
<IfModule mod_rewrite.c>
RewriteBase /mod_rewrite
RewriteEngine on
RewriteRule ^([0-9]+)/?$ index.php?id=$1 [QSA,L]
RewriteRule ^([0-9]+)/unwatch/?$ index.php?id=$1&unwatch=1 [QSA,L]
</IfModule>
原来我在[QSA,L]中的空间导致了500错误,并且\ d的行为与我的预期不符。