真实内容位于 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
。感谢。
答案 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内部服务器错误是重定向循环的结果。
这是因为您的规则将始终为真,因为您将重定向回同一页面。
您需要通过添加带有^的规则来排除结果链接!在所有休息之前。