我想移动我的.htaccess文件 - 重定向到我的vhost配置文件......
这是有效的 - 但htaccess重定向不是......
<VirtualHost *:80>
ServerName dev.x.com
ServerAlias dev.x.com
DocumentRoot "C:/wwwroot/x"
Alias /modules/ "C:/wwwroot/x/_my_modules/"
ErrorLog "C:/wwwroot/x/_my_logs/error.log"
CustomLog "C:/wwwroot/x/_my_logs/access.log" combined
<Directory "C:/wwwroot/x/_my_logs/" >
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>
</VirtualHost>
然后我做了 -
<VirtualHost *:80>
ServerName dev.x.com
ServerAlias dev.x.com
DocumentRoot "C:/wwwroot/x"
Alias /modules/ "C:/wwwroot/x/_my_modules/"
ErrorLog "C:/wwwroot/x/_my_logs/error.log"
CustomLog "C:/wwwroot/x/_my_logs/access.log" combined
<Directory "C:/wwwroot/x/_my_logs/" >
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>
RewriteEngine on
# if requested URI is not a file and not a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# externally redirect to /newLocation/{URI}
# RewriteRule (.*) index.php?_req=$1 [L]
# could use a redirect to a new directory ---
RewriteRule ^ /_mf_modules%{REQUEST_URI} [L,R=301]
</VirtualHost>
我的目标是: 我希望将任何“目录”请求(不存在)重新路由到_my_modules目录中该名称的目录。
如果文件不存在,我想重定向到_my_modules目录中该名称的目录。
因此,如果www.x.com/xxx是网址...并且'xxx'目录不存在,我会重定向到www.x.com/_my_modules/xxx
并且如果请求www.x.com/xxx.php同样明智 - 但是xxx.php不存在,他们将被重定向到www.x.com/_my_modules/xxx
然而(即使每个目录中都有一个index.php),这些总是导致eURL重定向到这个......
未找到请求的URL / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / modules / _my_modules /在这台服务器上。
所以我厌倦了将vhost文件改回到我必须开始的状态,重新启动Apache,它仍然重定向,我无法摆脱这种行为。
答案 0 :(得分:1)
您可以将RewriteRules从.htaccess移动到VirtualHost环境,方法是将它们放在vhost配置的<Directory>
环境中。
在您的情况下,请尝试在<Directory "C:/wwwroot/x/_my_logs/" >
如果你真的想把它们放在VirtualHost环境中,你必须修改它们中的路径:.htaccess中的RewriteRules或相对于目录,VirtualHost中的RewriteRules绝对是文件系统的根或DocumentRoot
重写示例:
RewriteCond %{REQUEST_FILENAME} !-f
应该是vhost:
RewriteCond /your/documentroot/%{REQUEST_FILENAME} !-f
rewriterule示例:
RewriteRule (.*) /your/documentroot/index.php?_req=$1 [L]
应该是vhost:
RewriteRule (.*) index.php?_req=$1 [L]