我基本上只是想为可预测的URL提供主语法。简单的URL没问题
RewriteEngine on
# RewriteRule ^friendlyUrl/content/?$ /index.php?app=main&module=content
我理解的是查找url结构并允许1或0尾随“/”的
但网站的某些部分有/ urlPrefix /可以访问,例如。 mysite.com/membersArea/
并且/membersArea/
将在每个查询中分开。我无法容纳在这些网址中跟踪?
和&
。
RewriteRule ^secureUrl/\?(.*)$ /index.php?app=admin&$1
这是我尝试处理从mysite.com/secureUrl/
到mysite.com/secureUrl/?var1=foo&var2=bar
的所有内容,经过多次服务器错误和搜索后,我发现自己在这里。
这是我和你们之间最复杂的一句话,除了寻找/friendlyUrl/10DIGITKEY/(possible task)/?possiblevars=foo&var2=bar
RewriteRule ^friendlyUrl/([a-zA-Z0-9]{10})/?([a-z]*)/?\??(.*)$ /index.php?app=main&module=web&id=$1&$2&$3
Htaccess一直是我最薄弱的主题,作为网站管理员我不断付出代价,任何帮助都会受到赞赏。
需要向PHP文件输入相同的请求(加上包含或不包含?
或&
的任何查询),无论是/friendlyUrl/
还是/friendyUrl/?var=1
,{{1 },/friendlyUrl/&var=1
答案 0 :(得分:1)
您希望保持请求URI的查询字符串保持原样,或者在重写过程完成后包含在重写的URL中。
为此,您在RewriteRule
指令中使用QSA
flag。因此,要重写/friendlyUrl/10DIGITKEY/(possible task)/?possiblevars=foo&var2=bar
,您必须:
RewriteRule ^friendlyUrl/([a-z\d]{10})/([^/]*)/?$ /index.php?app=main&module=web&id=$1&task=$2 [QSA]
注意最后的QSA
标志。另外,请记住,我已将第二个匹配项(您的网址的可能任务)作为另一个变量(名为task
)传递。如果没有找到任何内容,此变量将为空。
QSA|qsappend
当替换URI包含查询字符串时,默认行为
RewriteRule
的意思是丢弃现有的查询字符串,并替换它 与新生成的一个。使用[QSA]
标志会导致 查询要组合的字符串。