Php 通过一个;“展开”一词;使用Apache'标记GET参数;s mod_重写
EDIT@mootinator在这方面做了出色的工作。见下面他的答案 因为我不清楚如何指定我的确切URI,所以它仍然可以帮助寻找类似URI的人。我的URI更像:Php 通过一个;“展开”一词;使用Apache'标记GET参数;s mod_重写,php,apache,mod-rewrite,get,Php,Apache,Mod Rewrite,Get,EDIT@mootinator在这方面做了出色的工作。见下面他的答案 因为我不清楚如何指定我的确切URI,所以它仍然可以帮助寻找类似URI的人。我的URI更像:9/这里有一些文本/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_-
9/这里有一些文本/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]
RewriteRule ^(\d+)/unwatch index.php?id=$1&unwatch=1 [L]
对@mootinator的答案进行了相当小的修改,但我自己花了几分钟才弄明白。可能有助于节省下一行的时间
我正在尝试执行一个
mod_rewrite
来传入一个GET
参数,这是一种布尔标志,这样每当有人转到URI/unwatch
,你都可以拉出&unwatch=1
我已经有了这个规则:
RewriteRule ^(\d+)/* index.php?id=$1 [L]
我想用另一条规则来做这样的事情:
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]
RewriteRule ^(\d+)/unwatch index.php?id=$1&unwatch=1 [L]
“目录”/unwatch
根本不是目录。目录结构如下所示:
./index.php
./.htaccess
你有什么想法吗
RewriteRule ^([0-9]+)/?$ index.php?id=$1 [QSA,L]
RewriteRule ^([0-9]+)/unwatch/?$ index.php?id=$1&unwatch=1 [QSA,L]
QSA代表查询字符串追加。这样,用户传递的参数就不会被删除
如果我遗漏了一些关于绕过url而不是实际目录的内容,请查看它是如何做到的
使用以下.htaccess进行演示:
<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>
重写基/模重写
重新启动发动机
重写规则^([0-9]+)/?$index.php?id=$1[QSA,L]
重写规则^([0-9]+)/unwatch/?$index.php?id=$1&unwatch=1[QSA,L]
原来[QSA,L]中的空格导致了500错误,并且\d的行为与我预期的不一样。出于某种原因,我在该规则中遇到了一个内部服务器错误。查看了蛋糕链接,但无法将其变灰。我的蜘蛛感觉认为搜索模式中的/需要转义。但这是错误的。有没有更好的方法来实现这一点,包括创建一个目录,但可能会以某种方式修改上面的重写规则?@mootinator不幸的是仍然得到500个错误。想知道我对规则的排序是否有误,或者我是否需要以某种方式修改初始规则?可能是第二个规则无法访问。第一个规则将始终与第二个模式匹配,除非添加$表示url的结尾。