保持URL不变,加载index.php。

3
我的问题可能很愚蠢,但我已经谷歌了一下,没有找到答案...
假设我想访问我的网站在这个给定的网址:www.mywebsite.com/something/something_else/?some_query_string=true (我放置查询字符串,因为它将在那里,并且我不知道它是否会在htaccess文件中有任何区别)
我希望它保持相同的URL,但是无论什么URL都加载索引文件,该文件不在服务器的根目录中。我的服务器有一个“应用程序”文件夹,其中包含所有代码。
我该如何做?
谢谢!
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>

哇塞!上帝啊,两个答案同时出现了!秒杀秒杀! - Ilia
1
这是人们经常问的那种事情 :) - Latheesan
有另一个人已经删除了他的回答,你和他的回答时间戳完全相同!*(10:52:38Z)* 这就是我的意思!我相信这几乎不可能再次发生! - Ilia

1
如果您想使用Rewrite将请求处理到文档根目录之外的文件,则可以与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

请注意RewriteRule上的[PT],它意味着'pass through' - 它确保重写的URL被传递给其他可能有兴趣处理它的Apache模块。

谢谢!我不知道这是可能的! - Ilia

1
这实际上回答了我自己的问题。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ application/index.php?url=$1 [QSA,L]

如果URL不存在,它会在“application”文件夹内加载index.php文件,并保持URL不变,这正是我所需要的...感谢您的答案!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接