htaccess重定向不在相对路径中工作

时间:2013-11-13 23:56:47

标签: php .htaccess redirect

我正在尝试从所有文件重定向到模板文件。但重定向仅在我指定URL

时有效

例如:

不起作用(它不会重定向)

Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /template.php?page=$1 [L,QSA]

作品(重定向到http://domain.com/versioned/template.php?page=index.html

Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) http://domain.com/versioned/template.php?page=$1 [L,QSA]

第二个选项是更改浏览器中的URL。我需要保留原始网址。

由于

问题在于

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} -f

如果我退出它,它可以工作,但不是在URL中返回当前文件,而是返回始终是template.php

1 个答案:

答案 0 :(得分:0)

如果htaccess文件位于versioned目录中,则不希望规则的目标中包含前导斜杠:

Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) template.php?page=$1 [L,QSA]

此规则的目标template.php?page=$1中的相对URL路径告诉mod_rewrite将请求重写到此URL路径中,该路径位于htaccess文件所在的路径中。当您将目标设为{{ 1}},它假设一个绝对的URL路径,它等同于:/template.php?page=$1