我正在尝试关注Paul Irish的示例,了解如何在/publish
内建立我的网站的缩小版本。我已成功集成自动构建过程但无法将.htaccess文件指向正确的文件夹。
我的目标:
在实时服务器上将所有正常网站流量重定向到/publish
文件夹以使用“内置”网站。但是在开发服务器上使用/
普通根文件夹中的开发文件时。
我的问题:
我希望htaccess将请求从根目录重写到/publish
目录。由于在/
和/publish
目录中将使用相同的htaccess,我需要重写条件来阻止它将/publish
目录中的请求重写为/publish/publish/my-page
。我现在有这个:
RewriteCond %{SCRIPT_FILENAME} !^/publish/.+
RewriteRule ^(.*)$ publish/$1 [L]
上述条件会查找没有以script_filename
开头的/publish
的请求。如果是这样,它应该在前面用publish/
重写请求。
但是,这不起作用。有没有人有什么想法呢?我可以使用不同的服务器变量来识别请求是否在/publish
目录中。
答案 0 :(得分:2)
我认为当你没有明确地向Apache提出一个php文件时,%{SCRIPT_FILENAME}
没有设置,也许你应该尝试使用%{REQUEST_FILENAME}
。
顺便说一下,您可以查看mod_rewrite doc页面以获取更多信息:http://httpd.apache.org/docs/current/en/mod/mod_rewrite.html#rewritecond
答案 1 :(得分:2)
您应该使用%{REQUEST_URI}
,因为它是正确的变量,它将具有相对于站点根目录的路径,而不是其他物理文件名。
RewriteCond %{REQUEST_URI} !^/publish/
RewriteRule ^(.*)$ publish/$1 [L]