Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache htaccess移动到vhost,但玩得不好_Apache_Redirect_Vhosts - Fatal编程技术网

Apache htaccess移动到vhost,但玩得不好

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.

我想将我的.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.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]