2

我的问题可能很愚蠢,但我用谷歌搜索并没有找到答案......

假设我想在这个给定的 url 中访问我的网站:www.mywebsite.com/something/something_else/?some_query_string=true (我输入查询字符串是因为它会在那里,我不知道它是否会htaccess 文件中的任何差异)

我希望它保持 URL 相同,但无论哪个 URL 都加载索引文件,它不在服务器的根目录中。我的服务器有一个“应用程序”文件夹,所有代码都在其中。

我怎样才能做到这一点?

谢谢!

4

3 回答 3

2

使用 htaccess 重写所有对 index.php 的请求(除非文件/目录/链接被请求并且它存在):

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule .* index.php [L]

</IfModule>
于 2013-10-29T10:52:38.210 回答
1

原来这回答了我自己的问题:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ application/index.php?url=$1 [QSA,L]

如果 URL 不存在,它会将 index.php 文件加载到文件夹“application”中,并保持 URL 不变,这正是我所需要的......

感谢您的回答!

于 2013-10-29T18:51:06.437 回答
1

如果您想使用 Rewrite 让您的请求由DocumentRoot之外的文件处理,那么您可以与Alias指令结合使用。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* application/index.php [PT]


Alias application /path/to/application

请注意[PT]RewriteRule 上的“通过” - 它确保重写的 url 被传递到其他可能对处理它感兴趣的 apache 模块。

于 2013-10-29T10:57:27.253 回答