Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 使用mod_rewrite从url中删除两个子目录_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 使用mod_rewrite从url中删除两个子目录

Apache 使用mod_rewrite从url中删除两个子目录,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我正试图删除我网站上的一些子目录。目前,当我需要访问用户设置时,我使用这个username.mywebsite.com/public/user/settings.php,我希望它看起来像username.mywebsite.com/settings.php。在我的根目录中,有一个包含以下内容的htaccess文件: RewriteCond%{REQUEST\u URI}^/公共/用户 RewriteRule^/(.*)$/public/user/$1 它不起作用了。另外,我是否必须像这样修改ht

我正试图删除我网站上的一些子目录。目前,当我需要访问用户设置时,我使用这个
username.mywebsite.com/public/user/settings.php
,我希望它看起来像
username.mywebsite.com/settings.php
。在我的根目录中,有一个包含以下内容的htaccess文件:

RewriteCond%{REQUEST\u URI}^/公共/用户

RewriteRule^/(.*)$/public/user/$1


它不起作用了。另外,我是否必须像这样修改html href
?谢谢

您需要去掉正则表达式模式中的前导
/
。当URI通过htaccess文件中的规则发送时,斜杠被去掉。此外,在重写到
/public/user/
目录之前,您应该检查目标是否存在:

RewriteCond %{REQUEST_URI} !^/public/user
RewriteCond %{DOCUMENT_ROOT}/public/user%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/public/user%{REQUEST_URI} -d
RewriteRule ^(.*)$ /public/user/$1 [L]
另外,我是否必须像这样修改html href


是的,规则只在一个方向上起作用,regex模式指向目标。永远不要反过来。因此,您需要确保您的内容包含您想要使用的URL。

非常有效。谢谢