Php 通过一个;“展开”一词;使用Apache'标记GET参数;s mod_重写

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_-

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_-]+)/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的结尾。