![mod_rewrite 漂亮的 URL 不起作用](https://linux22.com/image/691439/mod_rewrite%20%E6%BC%82%E4%BA%AE%E7%9A%84%20URL%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有以下网址:
http://example.com/gallery/thumb.php?h=400&w=300&a=c&src=Img_0.jpg
我试图用它mod_rewrite
让它变得“漂亮”。
所需 URL 为:
http://example.com/h/400/w/300/a/c/src/Img_0.jpg
我的mod_rewrite
是:
RewriteRule ^h/(*)/w/(*)/a/(*)/src/(*)$ /gallery/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]
但是我收到一个500 Internal Server Error
错误,告诉我我写错了这个规则。
我写错了什么吗?
编辑:不是重复的。我的问题与我尝试自己编写但未能编写出可行代码的特定代码有关。
答案1
这在您的正则表达式中无效:(*)
。
*
表示重复前一个字符。由于组中没有任何字符,因此没有重复项。
如果更改(*)
为(.*)
表达式,则变得有效。.
表示“每个字符”,因此您可能需要进一步限制它。
您的示例的表达形式可以是:
RewriteRule ^h/(\d+)/w/(\d+)/a/([a-z]+)/src/(.+)$ /gallery/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]
其中\d
表示一个数字和[a-z]
此范围内的任意字符。我还将其更改*
为+
,它匹配“1 个或更多字符”,而不是“0 个或更多”,后者将是*
。