我正在尝试从所有文件重定向到模板文件。但重定向仅在我指定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
答案 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
。