htaccess - 获取请求后获取所有字符

时间:2013-10-04 18:14:04

标签: php mysql regex .htaccess

真实内容位于 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。感谢。

3 个答案:

答案 0 :(得分: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,之后的空格。

答案 1 :(得分:0)

^view/([A-Za-z0-9]+).
                    ^---single character wildcard

最后.匹配/消耗您的一个ID值,所以如果网址是

/view/foobarbaz

您的捕获群实际上将是foobarba,而z会被切断,生成

/view.php?id=foobarba

答案 2 :(得分:0)

您的500内部服务器错误是重定向循环的结果。

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

您需要通过添加带有^的规则来排除结果链接!在所有休息之前。