如何将localhost / s重定向到localhost / s / web / index.php以使用mod_rewrite

时间:2011-07-30 11:42:27

标签: .htaccess mod-rewrite

我正在开发一个小型Web应用程序,我的目录结构是这样的:

htdocs/s/index.php
htdocs/s/views/
htdocs/s/vendors/

我使用了这个.htaccess:

<IfModule mod_rewrite.c>
   Options -MultiViews
   Options +FollowSymlinks
   RewriteEngine On   
   RewriteBase /s/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

这样我就可以输入localhost/s/aaaa来访问localhost/s/index.php/aaaa。但我已将我的目录结构更改为:

htdocs/s/web/index.php
htdocs/s/views/
htdocs/s/vendors/

我不知道如何让.htaccess将localhost/s/aaa重定向到localhost/s/web/index.php/aaa.

我尝试了很多但却没有结果。这里有更多关于.htaccess和mod_rewrite的人可以帮助我吗?

编辑:似乎用我的lampp服务器或类似的设置它是不可能的。但是,人们如何设法使WordPress,Joomla和其他CMS做到这一点?

在开发环境中,这并不是那么重要,但是当我将其上传到互联网时,可以通过某种方式将应用程序的所有库和内部隐藏到Web访问者。我的意思是每个人都这样做,对吗?那怎么办呢?

编辑2:由于一些奇怪的原因,它不能在我的家庭服务器中,所以我回到我以前的目录结构,并在想要的目录中使用带有“deny For All”的.htaccess进行讨厌的黑客攻击隐藏。你不会隐藏很多,但我找不到任何其他解决方案......

1 个答案:

答案 0 :(得分:0)

如果你提供的重写规则对你来说很好,那么这应该也可以正常工作:

<IfModule mod_rewrite.c>
   Options +FollowSymlinks -MultiViews
   RewriteEngine On   
   RewriteBase /s/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ web/index.php [QSA,L]
</IfModule>