2

真正的内容在domain.com/view.php?id=image_id

我想让它可以通过domain.com/view/image_id访问

目前有以下内容可以获取.php文件扩展名。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

将以下内容附加到 htaccess 不起作用:

RewriteRule ^view/([A-Za-z0-9]+). /view.php?id=$1 [L, QSA]

另外,我对 view.php 之后的所有内容都满意吗?( view.php?id=) 进入 php 文件,从那里我可以用斜杠将所有内容分开并实现它们的数据。

我在 stackoverflow 和其他地方查看了许多解决方案,但要么它们不适用于我,要么我的服务器有问题。不管怎样,我得到一个internal 500 server error. 谢谢。

4

3 回答 3

2

您需要将视图规则放在更通用的 php 扩展规则之前:

RewriteEngine On

RewriteRule ^view/([A-Za-z0-9]+)$ /view.php?id=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

此外,您不希望L,.

于 2013-10-04T18:16:04.403 回答
0
^view/([A-Za-z0-9]+).
                    ^---single character wildcard

最后匹配/使用您的 ID 值之一,所以.如果 url 是

/view/foobarbaz

您的捕获组实际上将foobarbaz砍掉,生产

/view.php?id=foobarba
于 2013-10-04T18:17:59.220 回答
0

您的 500 Internal Server Error 是重定向循环的结果。

这是因为您的规则将始终为真,因为您正在重定向回同一页面。

您需要通过添加带有 ^! 的规则来排除生成的链接!在所有其他人之前。

于 2013-10-04T18:26:25.620 回答