rewriterule透明QSA

时间:2014-08-12 21:26:35

标签: apache .htaccess mod-rewrite

我使用以下代码从anything.sitename.com/search重写TRANSPARENTLY到sitename.com/folder/index.php?id=search,这有效但重定向而不是透明(QSA)重写:

RewriteCond %{HTTP_HOST} ^([^.]+)\.sitename\.com$
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteRule ^(.+)$ http://sitename.com/folder/index.php?id=%1 [L,QSA]

也只存在%1并且引用request_uri(而不是子域),并且未设置%2变量。 任何解决方案?

2 个答案:

答案 0 :(得分:1)

从目标URI中删除http://,否则将重定向而不是重写。

RewriteCond %{HTTP_HOST} ^([^.]+)\.sitename\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?id=%1 [L,QSA]

答案 1 :(得分:0)

我想我得到了你的问题。 Apache正在重定向外部而不是内部,对吧?那是因为你通过了一个域名。您必须使用文件路径来告诉apache使用内部重定向。