我有以下.htaccess文件代码
RewriteEngine On
RewriteBase /claimspro/
##-----Establish a custome 404 File not Found Page---
ErrorDocument 404 /claimspro/filenotfound.php
##-----Prevent Directory File listing in all folder---
IndexIgnore *
RewriteCond %{THE_REQUEST} ([A-Za-z0-9]+)\.php\?caseid=([0-9]+)&?([^\ ]*)
RewriteRule ^ %1/caseid/%2/?%3 [L,R]
RewriteRule ^([A-Za-z0-9]+)/caseid/([0-9]+)/ $1.php?caseid=$2 [L,QSA]
RewriteCond %{THE_REQUEST} ([A-Za-z0-9]+)\.php
RewriteRule ^ %1/?%2 [L,R]
RewriteRule ^([A-Za-z0-9]+)/ $1.php [L,QSA]
上面的代码按我希望的方式工作。它会将此localhost/claimspro/afile.php?caseid=11
的网址更改为localhost/claimspro/afile/caseid/11/
但是当我通过以下方式添加另一个参数,即/ caseid / 11 / picid / 12 /时,它表现得非常奇怪。
我是否可以要求对代码进行一些解释,以便能够得到一些对我有利的结果。
RewriteCond %{THE_REQUEST} ([A-Za-z0-9]+)\.php\?caseid=([0-9]+)&?([^\ ]*)
RewriteRule ^ %1/caseid/%2/?%3 [L,R]
首先,如果我可以问第一行末尾的内容(上图)&?([^\ ]*)
我将如何修改此内容以添加其他参数,例如RewriteCond %{THE_REQUEST} ([A-Za-z0-9]+)\.php\?caseid=([0-9]+)\&picid=([0-9]+)\&?([^\ ]*)
。如果你能解释一下我在这里做错了什么,我该怎么办呢。
其次这一行RewriteRule ^ %1/caseid/%2/?%3 [L,R]
这个%3代表什么是?%3 [L,R]
?
基本上我想在我的htaccess文件中添加一个参数以满足以下
localhost/claimspro/anotherfile.php?caseid=11&picid=22
我应该对我的代码添加哪些内容?
有什么想法吗?
答案 0 :(得分:2)
让我回答你的两个问题。
回答第一个问题:模式&?([^\ ]*)
与查询字符串的其余部分(如果存在)匹配。
回答第二个问题:?%3 [L,R]
将捕获的数据(来自第一个问题)作为查询字符串附加(R
标志用于默认重定向302)。
如果我必须这样做,我就会这样写的
Options -Indexes
ErrorDocument 404 /claimspro/filenotfound.php
RewriteEngine On
RewriteBase /claimspro/
RewriteCond %{THE_REQUEST} /([^/]+)\.php\?caseid=([0-9]+)&picid=([0-9]+)\s [NC]
RewriteRule . %1/caseid/%2/picid/%3/? [R=301,L]
RewriteCond %{THE_REQUEST} /([^/]+)\.php\?caseid=([0-9]+)\s [NC]
RewriteRule . %1/caseid/%2/? [R=301,L]
RewriteCond %{THE_REQUEST} /([^/]+)\.php\s [NC]
RewriteRule . %1/? [R=301,L]
RewriteRule ^([^/]+)/caseid/([0-9]+)/picid/([0-9]+)/$ $1.php?caseid=$2&picid=$3 [L]
RewriteRule ^([^/]+)/caseid/([0-9]+)/$ $1.php?caseid=$2 [L]
RewriteRule ^([^/]+)/$ $1.php [L]
答案 1 :(得分:1)
我无法解释代码,因为我不是模式重写专家,您可以使用以下代码更改代码并且可以使用
RewriteEngine On
RewriteBase /claimspro/
#-----Establish a custome 404 File not Found Page---
ErrorDocument 404 /claimspro/filenotfound.php
#-----Prevent Directory File listing in all folder---
IndexIgnore *
RewriteCond %{THE_REQUEST} ([A-Za-z0-9]+)\.php\?caseid=([0-9]+)\&picid=([0-9]+)&?([^\ ]*)
RewriteRule ^ %1/caseid/%2/picid/%3/?%4 [L,R]
RewriteRule ^([A-Za-z0-9]+)/caseid/([0-9]+)/picid/([0-9]+)/ $1.php?caseid=$2&picid=$3 [L,QSA]
RewriteCond %{THE_REQUEST} ([A-Za-z0-9]+)\.php
RewriteRule ^ %1/?%2 [L,R]
RewriteRule ^([A-Za-z0-9]+)/ $1.php [L,QSA]
让我知道它是否有效
此致