Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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
Php 使用.htaccess更改目录结构_Php_Apache_.htaccess - Fatal编程技术网

Php 使用.htaccess更改目录结构

Php 使用.htaccess更改目录结构,php,apache,.htaccess,Php,Apache,.htaccess,我想将我所有的网站文件(甚至包括index.php)移动到一个子目录中(例如exp:“abc”) 比如说 之前: 之后: public_html abc_directory index.php a.file directory an.other.file ... 我希望一切正常,就像以前一样,但我不想做任何重定向(可见) 用户应输入“”并通过.htaccess apache为其提供服务“”,但无需外部重定向(301302等) 如何使用mod_rewrite将

我想将我所有的网站文件(甚至包括index.php)移动到一个子目录中(例如exp:“abc”)

比如说 之前:

之后:

public_html
 abc_directory
   index.php
   a.file
   directory
     an.other.file
   ...
我希望一切正常,就像以前一样,但我不想做任何重定向(可见)

用户应输入“”并通过.htaccess apache为其提供服务“”,但无需外部重定向(301302等)

如何使用mod_rewrite将所有请求路由到子目录

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ directory/$1 [L,QSA]

在文档根目录中尝试此mod_重写规则:

RewriteEngine on
RewriteRule !^directory/ directory%{REQUEST_URI} [L]
或一般而言:

RewriteEngine on
RewriteCond $1 !^directory/
RewriteRule ^/?(.*) directory/$1 [L]

这甚至适用于服务器或虚拟主机配置。

我试过了。(实际上我想将所有内容重定向到ubenzer文件夹。)我已经编写了RewriteRule^(.*)$ubenzer/$1,但出现了500个内部服务器错误。您是否在和上调用了RewriteEngine?是的。我也不知道,但它恢复到500美元。但是,顶层的解决方案奏效了。无论如何,谢谢。:)为了解释这种行为:您有一个无限递归循环,因为
目录/…
也与
^(.*)$
匹配。它对我有效,但只有在所有其他重写之后将
重写cond
重写规则
放在文件底部之后。我只是想提一下。
RewriteEngine on
RewriteCond $1 !^directory/
RewriteRule ^/?(.*) directory/$1 [L]