Apache htaccess移动到vhost,但玩得不好
我想将我的.htaccess文件-重定向到我的vhost conf文件 这是工作-但htaccess重定向没有Apache htaccess移动到vhost,但玩得不好,apache,redirect,vhosts,Apache,Redirect,Vhosts,我想将我的.htaccess文件-重定向到我的vhost conf文件 这是工作-但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.
<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>
ServerName dev.x.com
ServerAlias dev.x.com
DocumentRoot“C:/wwwroot/x”
别名/modules/“C:/wwwroot/x/_my_modules/”
ErrorLog“C:/wwwroot/x/_my_logs/error.log”
CustomLog“C:/wwwroot/x/_my_logs/access.log”组合
选项如下符号链接
允许超越所有
命令拒绝,允许
全盘否定
满足所有
然后我做了这个-
<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>
ServerName dev.x.com
ServerAlias dev.x.com
DocumentRoot“C:/wwwroot/x”
别名/modules/“C:/wwwroot/x/_my_modules/”
ErrorLog“C:/wwwroot/x/_my_logs/error.log”
CustomLog“C:/wwwroot/x/_my_logs/access.log”组合
选项如下符号链接
允许超越所有
命令拒绝,允许
全盘否定
满足所有
重新启动发动机
#如果请求的URI不是文件,也不是目录
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#外部重定向到/newLocation/{URI}
#重写规则(.*)index.php?_req=$1[L]
#可以使用重定向到新目录--
重写规则^/_mf_modules%{REQUEST_URI}[L,R=301]
我的目标是:
我希望将任何不存在的“目录”请求重新路由到_my_modules dir中的同名目录
如果某个文件不存在,我想重定向到_my_modules dir中的同名目录
所以如果www.x.com/xxx是url。。。如果“xxx”目录不存在,我将重定向到www.x.com//u my\u modules/xxx
像wise一样,如果请求了www.x.com/xxx.php,但xxx.php不存在,它们将被重定向到www.x.com//u my\u modules/xxx
- 然而(即使每个目录中都有index.php),这些都会导致eURL重定向到此目录 在此服务器上未找到请求的URL/modules/modules/modules/modules/modules/modules/modules/modules/modules/modules/_my_modules/
所以我受够了,把vhost文件改回了原来的版本,重新启动了Apache,它仍然在重定向,我无法摆脱这种行为。您可以将重写规则从.htaccess移到VirtualHost环境,方法是将它们放在vhost配置的
环境中
在您的情况下,尝试在
如果您真的想将它们放在VirtualHost环境中,则必须修改其中的路径:重写.htaccess中的规则或相对于目录的规则,重写VirtualHost中的规则对于文件系统根或DocumentRoot是绝对的
重写第二个示例:
RewriteCond %{REQUEST_FILENAME} !-f
应在vhost中:
RewriteCond /your/documentroot/%{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?_req=$1 [L]
重写规则示例:
RewriteRule (.*) /your/documentroot/index.php?_req=$1 [L]
应在vhost中:
RewriteCond /your/documentroot/%{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?_req=$1 [L]