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

时间:2013-09-05 19:03:56

标签: apache .htaccess mod-rewrite

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

RewriteCond %{REQUEST_URI} !^/public/user

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

它不起作用。另外,我是否必须像这样<a href="/settings.php">修改html href?谢谢

1 个答案:

答案 0 :(得分:1)

您需要摆脱正则表达式模式中的前导/。通过htaccess文件中的规则发送URI时,会删除斜杠。此外,您应该在重写到/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,如<a href="/settings.php">

是的,规则只适用于一个方向,正则表达式模式目标。从来没有反过来。因此,您需要确保您的内容包含您要使用的网址。