1

我正在尝试从所有文件重定向到模板文件。但重定向仅在我指定 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。我需要保留原始 URL。

谢谢

问题在于

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

如果我退出它,它会起作用,但不是在 URL 中返回当前文件,而是总是返回 template.php

4

1 回答 1

0

如果 htaccess 文件在versioned目录中,则不需要规则目标中的前导斜杠:

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

此规则的目标中的相对 URL 路径template.php?page=$1,告诉 mod_rewrite 将请求重写到位于 htaccess 文件所在路径内的此 URL 路径。当您将目标设置为/template.php?page=$1时,它假定一个绝对 URL 路径,即将相当于:http://domain.com/template.php?page=foo

于 2013-11-14T00:46:30.613 回答