htaccess GET查询冲突

时间:2015-06-24 03:42:51

标签: php apache .htaccess mod-rewrite

我在服务器上设置了通配符子域,以将子域作为变量。它适用于根目录。现在,我有一个子目录,我需要相同它也可以工作。但是当我将查询字符串附加到该子域时会出现问题。我的.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,但从来没有。此外,如果有一个通用的方法来获取子目录的所有文件中的子域变量,我将不胜感激。

1 个答案:

答案 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