Mod rewrite PHP mod rewrite无法正常工作

Mod rewrite PHP mod rewrite无法正常工作,mod-rewrite,Mod Rewrite,这是我的.htaccess Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_URI} \/([0-9a-zA-Z]+)$ [NC] RewriteRule ^(.*) image.php?names[]=%1 [L] RewriteCond %{REQUEST_URI} \/([0-9a-zA-Z]+),([0-9a-zA-Z]+)$ [NC] RewriteRule ^(.*) image.php?names[]

这是我的.htaccess

Options +FollowSymLinks

RewriteEngine on
RewriteCond %{REQUEST_URI} \/([0-9a-zA-Z]+)$ [NC]
RewriteRule ^(.*) image.php?names[]=%1 [L]

RewriteCond %{REQUEST_URI} \/([0-9a-zA-Z]+),([0-9a-zA-Z]+)$ [NC]
RewriteRule ^(.*) image.php?names[]=%1&names[]=%2 [L]

RewriteCond %{REQUEST_URI} \/([0-9a-zA-Z]+),([0-9a-zA-Z]+),([0-9a-zA-Z]+)$ [NC]
RewriteRule ^(.*) image.php?names[]=%1&names[]=%2&names[]=%3 [L]

RewriteCond %{REQUEST_URI} \/gallery/([0-9a-zA-Z]+)$ [NC]
RewriteRule ^(.*) gallery.php?id[]=%1 [L]
这两个字符串不能正常工作

RewriteCond %{REQUEST_URI} \/gallery/([0-9a-zA-Z]+)$ [NC]
RewriteRule ^(.*) gallery.php?id[]=%1 [L]
当我进入gallery/hgJ56时,我会看到前两个字符串的内容

RewriteCond %{REQUEST_URI} \/([0-9a-zA-Z]+)$ [NC]
RewriteRule ^(.*) image.php?names[]=%1 [L]

我有麻烦了,无法理解^,请帮忙!我能做什么?

这是一个更清晰的重写规则版本

RewriteRule ^/([0-9a-zA-Z]+)$ image.php?names[]=$1 [QSA,NC,L]
RewriteRule ^/([0-9a-zA-Z]+),([0-9a-zA-Z]+)$ image.php?names[]=$1&names[]=$2 [QSA,NC,L]
RewriteRule ^/([0-9a-zA-Z]+),([0-9a-zA-Z]+),([0-9a-zA-Z]+)$ image.php?names[]=$1&names[]=$2&names[]=$3 [QSA,NC,L]
RewriteRule ^/gallery/([0-9a-zA-Z]+)$ gallery.php?id[]=$1 [QSA,NC,L]
告诉我它们是否有效

如果这还不够:

两个提示: 如果您不在托管环境中=如果它是您自己的服务器,并且您可以修改虚拟主机,而不仅仅是.htaccess文件,请尝试使用RewriteLog指令:它可以帮助您跟踪此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜欢的检查regexp的工具:

别忘了选择eregPOSIX而不是pregPCRE

这条规则

重写cond%{REQUEST_URI}/[0-9a-zA-Z]+$[NC]

将匹配以/结尾的字符串,后跟字母数字字符串,因此它将匹配gallery/hgJ56,因为它以/hgJF6结尾

如果该规则仅应匹配以/开头、后跟字母数字字符串的字符串,则可以将该规则更改为

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)$ [NC]
而且它将不再匹配gallery/hgJ56,您的其他规则将起作用

请注意,不需要转义/字符,即\/和just/是等效的

您可能还希望将^应用于其余规则,以防它们也仅与字符串的开头匹配,即更改

RewriteCond %{REQUEST_URI} \/gallery/([0-9a-zA-Z]+)$ [NC]


请解释您想做什么=>用户类型,服务器如何对其进行内部修改。你的重写规则还有改进的余地,不管你被否决了,请解释一下。好的,我明白了!现在,它起作用了!但是当我进入gallery/hgJ56时,变量id不存在!!!!这里是id变量,但实际上galery.php中没有id变量!!RewriteCond%{REQUEST_URI}^/gallery/[0-9a-zA-Z]+[NC]RewriteRule^.*/gallery.php?id=$1[L]@Anton最后一条规则需要的是%1而不是$1,即RewriteRule^.*/gallery.php?id=%1[L]不,我试过了!我已更改为%1,但它无法解决我的问题!
RewriteCond %{REQUEST_URI} ^/gallery/([0-9a-zA-Z]+)$ [NC]