.htaccess,虚拟目录和半复杂URL

时间:2014-12-21 21:52:14

标签: .htaccess mod-rewrite url-rewriting

我基本上只是想为可预测的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

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] 标志会导致   查询要组合的字符串。