这是我要完成的工作:
我需要从一个干净的 url 中提取 3 个点并将它们转换为 url 参数。一个典型的干净 url 如下所示:
http://mysite.com/page/someAlphaNumeric-OR-emailAddress/file.html
或者:
http://mysite.com/page/file.html
或者:
http://mysite.com/page/someAlphaNumeric-OR-emailAddress
第一个变量将始终是字母数字,第二个是可选的,可以包含字母数字或电子邮件地址,第三个(如果提供电子邮件/字母数字也是可选的)将始终是文件名。
我已经为第二个变量尝试了许多不同的方法,但问题是文件和电子邮件地址似乎存在冲突。到目前为止似乎最接近解决方案的代码:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9-z\-]+)$ index.php?page=$1&id=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9-z\-]+)/.*$ index.php?page=$1&id=$2&file=$0 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)/.*$ index.php?page=$1&file=$0 [L,QSA]
如果我提供一个页面,以及电子邮件地址和文件名,则只有文件名被分配一个参数。如果 url 中没有文件,则电子邮件地址会被放入文件参数中。
当然,如果我提供页面、字母数字和文件,一切都会完美运行。条件可能高于所有规则,但我不确定。