我正在尝试从所有文件重定向到模板文件。但是重定向仅在我指定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 中的当前文件,而是始终返回模板.php
如果 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 文件所在的路径内。当您将目标作为 /template.php?page=$1
时,它假定一个绝对的 URL 路径,相当于:http://domain.com/template.php?page=foo
。