我在服务器上设置了通配符子域,以将子域作为变量。它适用于根目录。现在,我有一个子目录,我需要相同它也可以工作。但是当我将查询字符串附加到该子域时会出现问题。我的.htaccess
在子目录example.com/student:
<IfModule mod_rewrite.c>
Options -Indexes
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$
RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$
RewriteRule ^MyCourse.php$ MyCourse.php?pageDetailId=%1 [L]
RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$
RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$
RewriteRule ^MyExam.php?courseId=(0-9+)$ MyExam.php?pageDetailId=%1&courseId=$1 [L]
</IfModule>
MyCourse.php工作正常我没有附加任何查询字符串,但MyExam.php需要一个GET查询字符串必须作为courseId。所以,无论我做什么,要么我得到子域(pageDetailId),要么得到courseId,但从来没有。此外,如果有一个通用的方法来获取子目录的所有文件中的子域变量,我将不胜感激。
答案 0 :(得分:3)
在规则的这一部分中,只需添加QSA flag
,如果存在query string
,它将发送RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$
RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$
RewriteRule ^MyExam.php$ MyExam.php?pageDetailId=%1 [QSA,L]
。您不必将其添加到规则中。
[string]$newDirectory = (Split-Path $Path -Leaf)
http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa